【发布时间】:2012-11-11 20:14:06
【问题描述】:
我有一个启用 ARC 的 Mac 项目和一个非 ARC 启用的框架,所有编译都很好,但是一旦运行非 ARC 框架会显示一个表单,但是当你点击一个按钮时,会抛出一个错误,比如......
2012-11-10 23:32:11.191 TestApp[20691:303] -[__NSCFType next:]: unrecognized selector sent to instance 0x101c13070
2012-11-10 23:32:11.193 TestApp[20691:303] -[__NSCFType next:]: unrecognized selector sent to instance 0x101c13070
2012-11-10 23:32:11.198 TestApp20691:303 doesNotRecognizeSelector:] + 186
3 CoreFoundation 0x00007fff8e63a5ce forwarding + 414
4 CoreFoundation 0x00007fff8e63a3b8 _CF_forwarding_prep_0 + 232
5 AppKit 0x00007fff8ff78a59 -[NSApplication sendAction:to:from:] + 342
6 AppKit 0x00007fff8ff788b7 -[NSControl sendAction:to:] + 85
7 AppKit 0x00007fff8ff787eb -[NSCell _sendActionFrom:] + 138
8 AppKit 0x00007fff8ff76cd3 -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 1855
9 AppKit 0x00007fff8ff76521 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 504
10 AppKit 0x00007fff8ff75c9c -[NSControl mouseDown:] + 820
11 AppKit 0x00007fff8ff6d60e -[NSWindow sendEvent:] + 6853
12 AppKit 0x00007fff8ff69744 -[NSApplication sendEvent:] + 5761
13 AppKit 0x00007fff8fe7f2fa -[NSApplication run] + 636
14 AppKit 0x00007fff8fe23cb6 NSApplicationMain + 869
15 AppSim 0x00000001000026f2 main + 34
16 libdyld.dylib 0x00007fff97c6c7e1 start + 0
17 ??? 0x0000000000000003 0x0 + 3
将主项目转换为非 ARC,问题出在...是什么导致了问题,我该如何解决?
我宁愿不将我现有的项目转换为使用非 ARC...
重现问题的步骤...
从
下载“OS X Lion 的示例项目,~250 KB”https://github.com/eternalstorms/ESSVideoShare-for-OS-X-Lion
将主项目转换为 ARC,将以 ... [yt uploadVideoAtURL:[NSURL fileURLWithPath 开头的行指向您拥有的任何 mov 文件,然后运行。
点击取消或登录会报错...
【问题讨论】:
-
请添加您的控制台输出以向我们展示它无法识别的选择器
-
这是我的整个控制台输出,我知道在 (IBAction)next:(id)sender 上放置一个断点永远不会被调用,并且在单击按钮时会发生错误,并且在使用时如上所述非 ARC 触发动作没有错误
-
啊,有些东西没有保留点击目标,所以它被释放了。非 ARC 代码转换为 arc,但在很多情况下它不起作用——@SlyRaskal 的评论对你很重要 :)
-
另外,这个问题和Xcode完全没有关系。删除虚假标签。
-
框架完全是非 ARC,主项目完全是 ARC,所以不要认为它是为相关类禁用 ARC 的情况,因为没有将框架中的任何文件拖到我的项目中,即我是仅链接到框架。
标签: objective-c cocoa automatic-ref-counting