这不是一个思考的问题 - 为什么NSNotificationCenter在发布时会抛出异常?我还是iPhone开发的新手,因此还不知道Cocoa的内部,所以理解为什么会很好。
我将 defaultCenter 分配给变量,调用 addObserver:selector:name:object ,然后释放上一个变量,但调用 [通知发布] 崩溃了应用程序。我在代码中没有做任何奇怪的事情,所以找出它为什么这样做会很有趣。
有人遇到过这个问题吗?
答案 0 :(得分:5)
根据我所知的NSNotifcation,您不应该将defaultcenter分配给变量,而是执行以下操作:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showLogin) name:@"IncorrectLogin" object:nil];
在该片段中,您调用默认中心并为特定邮件注册当前对象。
然后将消息发布到通知中心,您可以使用:
[[NSNotificationCenter defaultCenter] postNotificationName:@"IncorrectLogin" object:nil];
我在我的所有代码中都使用了上述代码,并且没有任何问题。
答案 1 :(得分:2)
应用程序应该只有一个默认通知中心,因此您的所有类都不应保留或释放它。你不希望你的通知中心消失在你身上,对吗?
答案 2 :(得分:1)
我认为您不拥有该对象,因此不应该释放它。
记住NARC:New Alloc,Retain,Copy。如果您执行其中一项,则必须将其释放。
答案 3 :(得分:0)
这不是你的发布。
记住NARC规则 - 您只能使用以下内容发布您带来的内容:
新 分配 保留,或 副本。
NARC。见
您正在使用NSNotificationCenter执行的操作是获取代表默认通知中心的单例的副本。值得一读的是单身人士。