今天发现控制器的dealloc方法延迟调用了,并不会在控制器pop后立即调用.
这个让我想起来前两天遇到的一个问题,就是在一个view中,我使用了removeFromSuperView.可是当这个view所在的控制器都已经被pop掉了,这个view的removeFromSuperView方法却迟迟没有调用,我不清楚这是不是因为view所在的控制器的dealloc方法同样还没调用.
今天遇到了dealloc方法延迟调用,我觉的不能再忽略这个问题了,得重视起来,于是上网一搜,说是因为在销毁控制器的时候,有一些例如[self performSelector:@selector(xxx) withObject:@"" afterDelay:1.2];这样的延迟方法.(尚未考证,等这一期上线后再考证.)
我觉得很有道理,所以决定把移除通知的方法写到- (void)viewWillAppear:(BOOL)animated方法中,可是在网上又看到不要把移除通知写到- (void)viewWillAppear:(BOOL)animated方法中,因为边缘侧滑手势在没有pop掉当前控制器时也会调用- (void)viewWillAppear:(BOOL)animated这个方法,所以我最后决定把移除通知的方法写到- (void)viewWillDisappear:(BOOL)animated,暂时没有遇到什么明显的问题,遇到了以后再说吧.