Lou*_*nco 10 iphone objective-c interface-builder ios xcode-storyboard
UPDATE
对于旧版本的Xcode来说,这是一个老问题.事实证明,问题是Xcode中的一个错误已被修复.
原版的
我有一个故事板生成一个新的标签iPhone应用程序(与ARC)
在我的一个标签中,如果我将一个手势识别器(任何,但让我们说Pan)拖到控件上,然后将选择器设置为一个动作,它就会在我转到选项卡时立即崩溃.
控制台中没有任何内容 - 在加载故事板时似乎正在发生(从未调用viewDidLoad).
(我可能在视图中弄乱了一些东西,但我没有弄清楚我做了什么).
如果我以编程方式制作手势,它们可以正常工作,但是让它在故事板中工作很好,而且我担心任何错误都会在某些方面导致崩溃.
更多信息
在我得到的模拟器中
-[__NSCFString setView:]: unrecognized selector sent to instance 0x6d2db70
Run Code Online (Sandbox Code Playgroud)
再次,需要调试技术 - 例如,有没有办法找出0x6d2db70是什么对象?
这与这个问题完全一样(没有答案):
更多信息
重现这一点很简单
崩溃.与我的应用程序相同,默认选项卡有效,其他选项卡则无效
错误消息告诉我们程序正在将setView:消息发送到一个实例__NSCFString(显然是私有实现类NSString).
确保您已尝试在启用僵尸的情况下运行.僵尸很容易导致无法识别的选择器错误.
如果它不是僵尸,请设置一个断点-[NSObject doesNotRecognizeSelector:].当断点被击中时,您可能只能从堆栈跟踪中找出问题.如果没有,您可以打印debugDescription对象(与description大多数类相同).
在模拟器上,您可以要求调试器打印对象,debugDescription如下所示:
(gdb) frame 0
#0 0x013bcbff in -[NSObject doesNotRecognizeSelector:] ()
(gdb) po ((int*)$ebp)[2]
this is my test string
Run Code Online (Sandbox Code Playgroud)
在设备上,您执行此操作:
(gdb) frame 0
#0 0x344bca22 in -[NSObject doesNotRecognizeSelector:] ()
(gdb) po $r0
this is my test string
Run Code Online (Sandbox Code Playgroud)
根据您的重现步骤,这是UIKit中的一个错误. 提交错误报告. 您可以通过创建强大的插座SecondViewController并将其连接到手势识别器来解决该问题. 确保将插座设置为nil in viewDidUnload.
不要将你的插座设置为零 - 部分错误是UIKit没有保留 - 你需要保留你的参考以确保不释放识别器.