我目前正在使用 Objective-C 的 XMPP 库,并且正在使用“桌面”示例代码。
它登录正常;但是,当我打开新聊天或有人向我发送消息时,它会崩溃。
这似乎是出了问题的地方:
XMPPStream[11678:1b03] RECV:
2012-06-05 15:03:59:379 XMPPStream[11678:1b03] RECV:
2012-06-05 15:03:59:382 XMPPStream[11678:403] RosterController: xmppRosterDidChange:
2012-06-05 15:03:59:387 XMPPStream[11678:403] RosterController: xmppRosterDidChange:
2012-06-05 15:04:01:900 XMPPStream[11678:403] tableView:shouldEditTableColumn:"jid" row:0
2012-06-05 15:04:01:900 XMPPStream[11678:403] user:
objc[11678]: cannot form weak reference to instance (0x7fcd4a498930) of class ChatController
and
objc[11998]: cannot form weak reference to instance (0x7f853bd17c70) of class ChatController
(lldb)
(lldb)
“无法形成对 ChatController 类的实例...的弱引用”是什么意思?你们知道我该如何解决吗?我在 Snow Leopard 中使用了该代码的旧版本,它起作用了,Lion 把我搞砸了!
谢谢你!
看着迈克·阿什的博客 http://www.mikeash.com/pyblog/friday-qa-2011-09-30-automatic-reference-counting.html,我发现了一段很有趣的:
ARC对弱引用清零的实现需要close
Objective-C 引用计数系统和
弱参考系统调零。这意味着任何类
覆盖保留和释放不能成为归零弱的目标
参考。虽然这种情况并不常见,但一些 Cocoa 类,例如 NSWindow,
受到这种限制。幸运的是,如果你击中了其中之一
在这种情况下,您会立即知道,因为您的程序将崩溃
像这样的消息:
objc[2478]: cannot form weak reference to instance (0x10360f000) of class NSWindow
如果您确实必须对此类类进行弱引用,那么您
可以使用 __unsafe_unretained 限定符代替 __weak。
您在应用程序中打开了 ARC 吗?如果你把它关掉,你会得到更好的结果吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)