我正在搜索我的应用程序的崩溃日志,我看到了这个(它安静地发生了几次,而不是一两次):
如上所示,通知中心发布了一个内存警告通知,并且以某种方式转发给了一个CALayer
。我还看到 didReceiveMemoryWarning:
消息的实例发送到其他已释放的对象,例如 UIImageView
甚至私有(private) _UINavigationBarBackground
对象,当启用僵尸时在我的调试器上,我的应用程序也崩溃了。为什么会这样?
最佳答案
NSNotificationCenter 只保留对观察者的弱引用。
可能发生的情况是您在某处有一个或多个对象注册了 UIApplicationDidReceiveMemoryWarningNotification,但从未取消注册(这是一个错误)。由于 NSNotificationCenter 只保留对这些对象的弱引用,因此当它们被释放时它不会注意到,并且它们的内存被其他对象重用,例如 CALayer 等,这些对象没有实现名为 didReceiveMemoryWarning 的方法。
关于ios - 为什么 iOS 向释放的对象发送内存警告,导致我的应用程序崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32514884/