0

这与其说是一个思考的问题,不如说是一个思考——为什么 NSNotificationCenter 在发布时会抛出异常?我还是 iPhone 开发的新手,因此还不了解 Cocoa 的内部结构,所以最好了解原因。

我将defaultCenter分配给一个变量,调用addObserver:selector:name:object然后释放前一个变量,但是对[notify release]的调用使应用程序崩溃。我没有在代码中做任何奇怪的事情,所以找出它为什么这样做会很有趣。

有人遇到过这个问题吗?

4

4 回答 4

5

根据我对 NSNotifcation 的了解,您不应将 defaultcenter 分配给变量,而应执行以下操作:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showLogin) name:@"IncorrectLogin" object:nil];

在该片段中,您调用默认中心并为特定消息注册当前对象。

然后向通知中心发布消息,您可以使用:

[[NSNotificationCenter defaultCenter] postNotificationName:@"IncorrectLogin" object:nil];

我在所有代码中都使用了上述内容,并且没有任何问题。

于 2010-06-21T16:53:16.917 回答
2

您的应用程序应该只有一个默认通知中心,因此您的任何课程都不应该保留或释放它。你不希望你的通知中心消失在你身上,对吧?

于 2010-06-21T16:52:35.510 回答
1

我认为您不拥有该对象,因此不应释放它。

记住 NARC:新分配、保留、复制。如果您执行其中一项操作,则必须释放它。

于 2010-06-21T16:52:56.773 回答
0

释放不是你的。

记住 NARC 规则——你只发布你使用的东西:

新的分配保留或复制。

国家癌症研究中心。看?

您对 NSNotificationCenter 所做的是获得代表默认通知中心的单例副本。值得一读单身人士。

于 2010-06-21T18:45:31.147 回答