gpt4 book ai didi

iphone - 在 StoryBoard 中使用手势识别器时崩溃

转载 作者:技术小花猫 更新时间:2023-10-29 11:03:14 26 4
gpt4 key购买 nike

更新

这是旧版 Xcode 的老问题。原来这个问题是 Xcode 中的一个错误,已被修复。

原创

我有一个 Storyboard是通过制作一个新的 tab iphone 应用程序(使用 ARC)生成的

在我的一个选项卡中,如果我将一个手势识别器(任何,但让我们说是平移)拖到一个控件上,然后将选择器设置为一个 Action ,它就会在我转到该选项卡时立即崩溃。

控制台中没有任何内容——它似乎是在加载 Storyboard时发生的(从未调用过 viewDidLoad)。

  1. 我不知道如何获取更多信息
  2. 在不同的选项卡上,这工作正常。这两个选项卡都是自动生成的。

(我可能在 View 中搞砸了一些东西,但我不知道我做了什么)。

如果我以编程方式做出手势,它们可以正常工作,但是让它在 Storyboard中工作很好,而且我担心任何错误都会在某些时候以其他方式导致崩溃。

更多信息

在模拟器中我得到

-[__NSCFString setView:]: unrecognized selector sent to instance 0x6d2db70

同样,需要调试技术——例如,有没有办法找出对象 0x6d2db70 是什么?

这正是这个问题(没有答案):

Gesture recognizer in Interface builder crashes my app

更多信息

重现起来很简单

  1. 新的 iPhone 选项卡式应用程序、ARC 和 Storyboard
  2. 将点击手势拖到第二个选项卡的 View 上(适用于第一个选项卡)
  3. 创建一个(IBAction)
  4. 将手势的选择器连接到#3 中的 Action
  5. 运行,转到第二个标签

崩溃。与我的应用程序相同,默认选项卡有效,其他选项卡无效

最佳答案

错误信息告诉我们程序正在发送setView:消息给__NSCFString的一个实例(这显然是NSString<的私有(private)实现类)。

确保您已尝试在启用僵尸的情况下运行。僵尸很容易导致无法识别的选择器错误。

如果不是僵尸,就在-[NSObject doesNotRecognizeSelector:]上打断点。当遇到断点时,您也许可以仅从堆栈跟踪中找出问题所在。如果没有,您可以打印对象的 debugDescription(这与大多数类的 description 相同)。

在模拟器上,您可以要求调试器像这样打印对象的debugDescription:

(gdb) frame 0
#0 0x013bcbff in -[NSObject doesNotRecognizeSelector:] ()
(gdb) po ((int*)$ebp)[2]
this is my test string

在设备上,你这样做:

(gdb) frame 0
#0 0x344bca22 in -[NSObject doesNotRecognizeSelector:] ()
(gdb) po $r0
this is my test string

更新

根据您的重现步骤,这是 UIKit 中的一个错误。 File a bug report.您可以通过在 SecondViewController 上创建一个强大的 socket 并将其连接到手势识别器来解决该错误。 确保在 viewDidUnload 中将 outlet 设置为 nil。

更新

永远不要将 outlet 设置为 nil——错误的一部分是 UIKit 没有保留——你需要保留你的引用以确保识别器没有被释放。

关于iphone - 在 StoryBoard 中使用手势识别器时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9035826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com