-
遭遇crash
一开始我也没有想到[NSNotificationCenter postNotificationName:object:]这个人畜无害的系统函数带来莫名其妙的闪退。所以在查代码之初,我压根就没有怀疑过它。
原因
说起来原因就是对于通知中心的错误使用,监听postName的观察者没有remove。详情请看学习
- (void)postNotificationName:(NSNotificationName)aName object:(NSString *)anObject; notificationName Name of the notification to post. Must not be nil. notificationSender Sender of the notification. May be nil.
通知中心在添加观察者时使用了unsafe_unretained,这篇文章作了详细的介绍。
通知中心在发通知的时候做的事情大致如下:
- 收到指定* notificationName*的消息,
- 检查有没有这个消息的观察者,
- 给观察者发消息