iOS使用NSNotificationCenter通知崩潰 -开发者知识库

iOS使用NSNotificationCenter通知崩潰 -开发者知识库,第1张

至於NSNotificationCenter通知的使用,博主在這里不多講,百度會出來一大堆,但是今天博主在使用通知時,出現一個問題,就是在iPhone6 以上機子使用時都沒問題,但是在5S上使用直接crash了,博主先使用5S模擬器發現沒問題,就差看了一下同事5S機子系統,發現是iOS8.2系統,打了一下全劇斷點,斷在通知處,且是主線程crash

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeState) name:@"changeState" object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"changeState" object:nil];=
因此博主懷疑是之前不細心使用通知沒有移除掉,因此增加了一個dealloc方法調用移除通知方法,因為博主在這ViewController中只使用了一個通知,就沒有針對通知名去移除

- (void)dealloc{
    [super dealloc];
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
因為在iOS8.0中,通知沒有移除,就會被調用,而此時他雖然被銷毀了沒有被置為nil,當調用了一個被銷毀的對象時自然就會發生crash,因此為了代碼嚴謹性,使用通知時必須針對通知名去進行銷毀。

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复