这不像一个沉思的问题 - 为什么NSNotificationCenter在发布时会抛出异常?我对iPhone的发展还不熟悉,因此也不了解Cocoa的内涵,所以理解它为什么会很好。为什么NSNotificationCenter在发布时会抛出异常?
我分配defaultCenter一个变量,调用的addObserver:选择:名称:对象,然后释放一个变量,而是调用[通知发布]崩溃的应用程序。我在代码中没有做任何奇怪的事情,因此找出它究竟为什么这么做会很有趣。
任何人遇到这个问题?
这不像一个沉思的问题 - 为什么NSNotificationCenter在发布时会抛出异常?我对iPhone的发展还不熟悉,因此也不了解Cocoa的内涵,所以理解它为什么会很好。为什么NSNotificationCenter在发布时会抛出异常?
我分配defaultCenter一个变量,调用的addObserver:选择:名称:对象,然后释放一个变量,而是调用[通知发布]崩溃的应用程序。我在代码中没有做任何奇怪的事情,因此找出它究竟为什么这么做会很有趣。
任何人遇到这个问题?
据我所知NSNotifcation的你不应该分配defaultcenter给一个变量,而是做这样的事情:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showLogin) name:@"IncorrectLogin" object:nil];
在片断代码的调用默认中心和注册当前对象一定信息。
然后发布一条消息,通知中心,你可以使用:
[[NSNotificationCenter defaultCenter] postNotificationName:@"IncorrectLogin" object:nil];
我用我所有的代码上面,并没有与它的任何问题。
应该只有一个默认的通知中心为您的应用程序,所以您的任何类都不应该保留或释放它。你不希望你的通知中心消失在你身上,对吧?
哦,对,所以我分配一个*引用*然后,而不是一个新的对象。啊,这很有道理。谢谢! – 2010-06-21 16:55:56
我不认为你自己的对象,因此不应该释放它。
记住NARC:新Alloc,保留,复制。如果你做了其中的一个,你必须释放它。
这不是你的发布。
记住NARC规则 - 你只使用释放你带来的东西进入存在:
新 分配 保留或 复制。
NARC。看到?
你在用NSNotificationCenter做什么,你会得到代表默认通知中心的单身人士的副本。这是值得读的单身人士。
相关文档:http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/MemoryMgmt/ – 2010-06-21 18:27:42