Iphone 如何知道postNotificationName:object:userInfo的崩溃位置
在Xcode 4.6中是否有一些方法可以知道崩溃原因Iphone 如何知道postNotificationName:object:userInfo的崩溃位置,iphone,objective-c,cocoa,nsnotificationcenter,Iphone,Objective C,Cocoa,Nsnotificationcenter,在Xcode 4.6中是否有一些方法可以知道崩溃原因 The crash stack is : Exception Type: SIGSEGV Exception Codes: SEGV_ACCERR at 0xd9f2c061 Crashed Thread: 0 Thread 0 Crashed: 0 libobjc.A.dylib 0x3a74f5aa objc_msgSend + 10 1 Foundation
The crash stack is :
Exception Type: SIGSEGV
Exception Codes: SEGV_ACCERR at 0xd9f2c061
Crashed Thread: 0
Thread 0 Crashed:
0 libobjc.A.dylib 0x3a74f5aa objc_msgSend + 10
1 Foundation 0x33157599 -[NSNotificationCenter postNotificationName:object:userInfo:] + 73
2 UIKit 0x347830cd -[UIApplication _handleApplicationSuspend:eventInfo:] + 733
3 UIKit 0x346f91e7 -[UIApplication handleEvent:withNewEvent:] + 2459
4 UIKit 0x346f86cd -[UIApplication sendEvent:] + 73
5 UIKit 0x346f811b _UIApplicationHandleEvent + 6155
6 GraphicsServices 0x363ee5a3 _PurpleEventCallback + 591
几乎可以肯定的是,一个对象在通知中心注册以接收该通知,但在解除分配之前未能取消注册 发现问题的最简单方法是启用NSZombies-请参阅例如。如果在启用僵尸的情况下运行,那么应该释放的对象将保留在内存中,但如果有人试图调用它们,则会引发异常。因此,您可以准确地了解通知中心试图调用的对象类型,以及可能出错的对象
给定通知来源的名称-
\u handleApplicationSuspend:eventInfo:
-您可能还需要快速检查注册UIApplicationWillResignActiveNotification
的任何人,UIApplicationIdentinterBackgroundNotification
和其他与应用程序暂停相关的通知。向通知中心添加观察者时,必须在解除分配/销毁对象时将其删除。否则,通知中心将向被毁坏的物体发送通知,导致碰撞
1-检查您是否正确处理从通知中心移除的问题。(通常在dealloc方法上执行此操作)
2-如果步骤1没有帮助,请使用instruments&zombies评测应用程序。它将指出哪一个对象已被销毁,但仍在接收消息 可能是一个有用的信息,它似乎只在ios7上崩溃,因为我的项目在ios6上运行得很好。也许userInfo is的值为零
[[NSNotificationCenter defaultCenter] postNotificationName:SayLoggedInNotification object:wSelf userInfo:@{@"from": wSelf.from}];
# wSelf.form is nil
dealloc函数中的以下代码是否可以删除在init中添加的所有观察者<代码>NSNotificationCenter*nc=[NSNotificationCenter defaultCenter];[nc removeObserver:self]代码>是的,它会从它注册的所有通知中删除对象(self)。所以奇怪的是,所有观察者都应该被删除,但仍然存在崩溃。