调用方法时出现奇怪的错误(UITextSelectionView)?

时间:2014-10-14 09:16:47

标签: ios objective-c xcode methods runtime-error

我在调用方法时遇到问题而我不知道怎么弄清楚。 基本上,在主菜单中,我想调用一个显示教程部分的SKNode。代码如下:

- (void)didMoveToView:(SKView *)view
{
    ...

    if ([[GameData sharedData] openingTutorial]) { // Checks if the menu needs the tutorial
        [_tutorialObj performSelector:@selector(runTutorialWithStep:)
                           withObject:[NSNumber numberWithInt:8]
                           afterDelay:3.0
         ];
    }
}

当调用方法didMoveToView:时(甚至在等待runTutorialWithStep:的3秒之前),我收到此错误:

[UITextSelectionView name]: unrecognized selector sent to instance 0x1576e6c0 2014-10-14 11:01:19.430
[406:130379] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITextSelectionView name]: unrecognized selector sent to instance 0x1576e6c0'

奇怪的是,在上一课中,我在didMoveToView:中使用相同教程的操作,并且它正常工作。但...

这里的事情越来越奇怪!!!

如果我使用中间方法进行此调用:

- (void)didMoveToView:(SKView *)view
{
    ...

    [self performSelector:@selector(intermediaryMethod)
              withObject:nil
              afterDelay:3.0
     ];
}

- (void)intermediaryMethod
{
    [_tutorialObj performSelector:@selector(runTutorialWithStep:)
                       withObject:[NSNumber numberWithInt:8]
                       afterDelay:0.0
     ];
}

一切都没有问题。我不想避免这个问题,但要解决这个问题。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

错误说明了一切。您尝试将“名称”消息发送到未实现它的对象(UITextSelectionView)。由于你的第二次采取工作原因是在

[[GameData sharedData] openingTutorial]

方法或此调用之前。搜索调用'name'的对象并检查它是否是相关的UITextSelectionView。

那或者你对普通视图对象有弱引用,在调用runTutorialWithStep之前的三秒内你将它重新分配给实现'name'消息的对象。

答案 1 :(得分:0)

好的,我解决了这个问题。

我为每个异常添加了一个断点,我意识到问题是由于另一个类(唯一一个使用UITextView)。 基本上,一旦我不再需要它,我就自己从父对象([self removeFromParent])中删除了文本字段。

我认为在重新分配期间错误被触发了,因为程序无法找到UITextView。我设法删除了这个陈述,一切正常。

实际上我仍然有疑问,因为我不明白为什么只有在我调用[_tutorialObj runTutorialWithStep:]方法时抛出此异常。

答案 2 :(得分:0)

我找到了解决问题的方法。

UITextView *textView = .....

textView.selectable = NO;