Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在情节提要中使用手势识别器时崩溃_Iphone_Objective C_Ios_Interface Builder_Xcode Storyboard - Fatal编程技术网

Iphone 在情节提要中使用手势识别器时崩溃

Iphone 在情节提要中使用手势识别器时崩溃,iphone,objective-c,ios,interface-builder,xcode-storyboard,Iphone,Objective C,Ios,Interface Builder,Xcode Storyboard,更新 对于旧版本的Xcode来说,这是一个老问题。原来这个问题是Xcode中的一个bug,已经修复了 原创 我有一个通过制作新的tab iphone应用程序生成的故事板(带有ARC) 在我的一个选项卡中,如果我将手势识别器(任何,但让我们说平移)拖到一个控件上,然后将选择器设置为一个动作,它只会在我转到该选项卡时崩溃 控制台中没有任何内容——它似乎是在加载情节提要时发生的(从未调用viewDidLoad) 我不知道如何获得更多的信息 在另一个选项卡上,这可以正常工作。两个选项卡都是自动生成的 (

更新

对于旧版本的Xcode来说,这是一个老问题。原来这个问题是Xcode中的一个bug,已经修复了

原创

我有一个通过制作新的tab iphone应用程序生成的故事板(带有ARC)

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

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

  • 我不知道如何获得更多的信息
  • 在另一个选项卡上,这可以正常工作。两个选项卡都是自动生成的
  • (我可能在视图中弄错了什么,但我不知道我做了什么)

    如果我以编程的方式做手势,它们工作得很好,但在故事板中也能工作是很好的,我担心任何错误都会在某个时候以其他方式导致崩溃

    更多信息

    在模拟器里我得到

    -[__NSCFString setView:]: unrecognized selector sent to instance 0x6d2db70
    
    同样,需要调试技术——例如,有没有办法找出对象0x6d2db70是什么

    这和这个问题完全一样(没有答案):

    更多信息

    这是微不足道的复制

  • 新iPhone选项卡式应用程序、ARC和故事板
  • 将点击手势拖到第二个选项卡的视图上(适用于第一个选项卡)
  • 创建(iAction)
  • 将手势的选择器连接连接到来自#3的动作
  • 运行,转到第二个选项卡

  • 撞车。与我的应用程序相同,默认选项卡起作用,其他选项卡不起作用。错误消息告诉我们,程序正在将
    setView:
    消息发送到
    \uu 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
    
    在设备上,您可以执行以下操作:

    (gdb) frame 0
    #0  0x344bca22 in -[NSObject doesNotRecognizeSelector:] ()
    (gdb) po $r0
    this is my test string
    
    更新 根据您复制的步骤,这是UIKit中的一个bug。您可以通过在
    SecondViewController
    上创建一个强大的插座并将其连接到手势识别器来解决该错误。确保在
    viewDidUnload
    中将插座设置为零

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

    在我的例子中,当通过拖放代码为手势识别器自动创建IBOutlet时,Xcode正确地创建了带有“strong”属性的属性,但它也在viewDidUnload中添加了“设置为零”。删除“设置为零”为我解决了这个问题。

    什么样的崩溃?西格伯特?EXC\u访问错误?堆栈跟踪是什么?问题是控制台什么都没有。堆栈跟踪返回到发布池中的main(因此感觉像内存损坏)。需要获得更多信息的想法。我已经做了很多iPhone调试,但对4.2、ARC等还不熟悉。我想了解一些新技术的想法(我知道僵尸、调试malloc等,但它们似乎不合适)。指向main的堆栈跟踪通常表示抛出了异常。是否设置了异常断点?除了设置识别器的目标和操作外,它还需要至少位于一个视图的
    gestureRecognitors
    outlet集合中。您可以通过将识别器放置在视图上来实现这一点。但如果它不在任何
    手势识别器
    集合中,它应该是无害的。打开僵尸表示轻拍手势是僵尸-[UICapgestureRecognitizer retain]:发送到解除分配实例0x6b5ba80I的消息刚刚注意到UIImageView没有GestureRecognitivers集合--我有其他UIImageView,手势在其中起作用(在inspector中也有IB警告)。
    GestureRecognitivers
    属性是
    UIView
    的一部分,因此,
    UIImageView
    继承了它。它没有标记为IBOutletCollection,因此只有在视图上放置识别器时,它才会显示在IB中。您需要在viewDidUnload中将插座设置为nil。否则它不会在内存警告下释放。哇!我也遇到过这个问题,直到我查看了设备登录管理器并发现DoesNotReconficateSelector是由刷卡引起的,我才找到这个页面。我也遇到了同样的问题,上面的修复也起了作用(只需按住ctrl键并将滑动手势拖到backing view控制器的头文件上,使其成为一个强大的出口-问题已解决)。谢谢这是有道理的——在我以标准方式手动添加IBOutlet之后,我遇到了同样的问题。