Objective-C 库 - 无法形成对类实例的弱引用

2024-01-15

我目前正在使用 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(使用前将#替换为@)

Objective-C 库 - 无法形成对类实例的弱引用 的相关文章

  • UITableView 在单元格刷新时滚动到顶部

    我有一个 UITableView 其中一个单元格的大小是动态调整的 以适应其中的 UITextView 每当键入一个键时 单元格都会检查计算出的高度是否增加 就像换行符一样 因此它可以告诉表单元格的高度需要重新计算 我用这段代码做到了这一点
  • 在 iOS 中,如何以编程方式填写 pdf 表单字段?

    我需要获取一个现有的 pdf 文件 并以编程方式填写带有文本的表单字段列表 然后保存 pdf 而不将其显示给用户 例如 如果 pdf 文件包含名为 LastName 和 FirstName 的字段 我想将 FirstName 的值设置为 L
  • 如何本地化 iOS 故事板

    我有一个包含一些视图的 iPhone 故事板 例如 导航项标题名为News 应翻译为其他语言 当我向故事板添加新的本地化版本时 它会为新语言创建当前故事板的副本 在这里我可以更改导航项的标题 但对我来说它似乎不太有用 如果我的故事板包含 1
  • “无法取消归档名为 UITableViewController 的元素”

    我一直在按照 构建你的第二个 iOS 应用程序 教程一步步进行 在教程承诺所有错误都会消失之后 我遇到了这个错误 但直到其他错误都出现后 该错误才出现 全部更正 我尝试编译它 错误 The document MainStoryboard i
  • 使用标识符启动 iPhone 应用程序

    我正在尝试在我的应用程序中启动应用程序 例如 如果我按下 testApp1 中的按钮 它应该打开 testApp2 有没有办法用应用程序标识符来做到这一点 我听说过一种名为的未记录方法launchApplicationWithIdentif
  • 增加 iPhone 的推送通知徽章

    是否可以在收到通知时增加徽章值 或者我应该将计数作为有效负载发送吗 如果我每次都将徽章值发送为 1 那么如果应用程序未打开 我如何增加应用程序图标中的徽章值 我已经使用了这段代码 但不起作用 void application UIAppli
  • dispatch_semaphore_t 重用 - 我在这里缺少什么?

    我有一些代码 其中使用dispatch semaphore t 来表示操作完成 当信号量是成员变量时 它的行为似乎不正确 我将展示有效的示例代码和似乎无效的示例代码 implementation someClass dispatch sem
  • Xcode 4.2 UITableview 自定义单元格

    我对故事板上的自定义单元格有疑问 我需要从调用的方法访问标签 UITableViewCell tableView UITableView tableView cellForRowAtIndexPath NSIndexPath indexPa
  • UITableView 给出空表,不加载数据

    当保存我的表的视图是主 第一个 视图时 一切正常 但是 当它不是第一个视图并且我切换到该视图时 我的表不会加载数据 并且我得到一个空桌子 使用 NSLog 我可以看出该程序是不调用 numberOfRowsInSection 和 cellF
  • 如何使用文档提供者扩展?

    我正在学习更多有关 ios 扩展的知识 例如 今日扩展 照片编辑扩展 动作延伸 自定义键盘扩展 在所有这些中 我在学习上没有困难 但最近我尝试学习 文档提供程序扩展 令我惊讶的是 在互联网上没有找到任何相关教程谈论如何使用它 与其他人一样一
  • 将数据从子模态 VC 传递到父视图控制器的最佳方法?

    将数据从子模式视图传递到父视图控制器的最佳方法是什么 我的 iPad 应用程序上有一个子模式登录屏幕 我想将用户信息传回父级分割视图控制器 我正在考虑使用 NSNotification 但我不确定这是否是将数据传递回父级的最简单 最有效的方
  • C / Objective C 中的 switch 语句

    我是 Objective C 的新手 但根据我对 switch 语句的了解 以下代码不应该打印任何内容 因为对我来说 似乎应该存在编译错误 但是打印了 2 我不懂为什么 有人可以解释一下吗 void test int myVar 2 swi
  • 动态更新 UIAlertView 消息和换行符问题

    我需要在 UIAlertView 的消息中显示多行文本 我尝试过添加 n 但没有效果 它仍然显示 这是一个示例 但是 如果我将 iPhone 切换为横向模式 它会按照我的预期显示该消息 然后 如果我切换回纵向模式 它也会正确显示 更新 经过
  • 将圆角应用于使用 UIBezierPath 创建的圆弧

    我正在研究一个使用 UIBezierPath 创建的圆形进度条 进度条如下图所示 我的问题是 如何使圆弧的边缘变成圆形而不是矩形 我用来绘制圆弧的代码如下 Draw the arc with bezier path int radius 1
  • 核心数据二进制数据允许外部存储崩溃

    我在 iOS 12 0 1 上发生崩溃 日志如下 ImageIO CFDataGetBytes data 0x28539b2f0 size 154262 offset 8 count 8 dst 0x16dbf86f0 External d
  • MIDI 文件解析

    我们如何使用 Objective C 进行 MIDI 文件解析 在Java中用于MIDI文件解析的包名为javax sound midi Objective c 有什么东西吗 如果你们中有人回复的话将会有很大的帮助 提前致谢 您可以使用 C
  • Eddystone 信标检测问题

    以下是我使用 iPhone iOS 9 检测 Eddystone 的代码 void viewDidLoad super viewDidLoad if CLLocationManager locationServicesEnabled loc
  • 如何执行 UIAlertAction 的处理程序?

    我正在尝试编写一个帮助程序类以允许我们的应用程序支持两者UIAlertAction and UIAlertView 然而 当写alertView clickedButtonAtIndex 方法为UIAlertViewDelegate 我遇到
  • iOS:保持应用程序在后台运行

    如何让我的应用程序在后台运行 我需要越狱我的 iPhone 才能执行此操作吗 我只需要这个应用程序每隔设定的时间间隔从互联网上检查一些内容 并在需要时发出通知 以供我自己使用 是的 不需要越狱 查看本文档的 实现长时间运行的后台任务 部分A
  • 在 UITableviewCell 高度动画的同时动画 CALayer 阴影

    我有一个 UITableView 我正在尝试使用它来展开和折叠beginUpdates and endUpdates方法并在发生时显示阴影 在我的自定义 UITableViewCell 中 我有一个图层 我为其创建阴影layoutSubvi

随机推荐