我在调用方法时遇到问题而我不知道怎么弄清楚。 基本上,在主菜单中,我想调用一个显示教程部分的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
];
}
一切都没有问题。我不想避免这个问题,但要解决这个问题。有什么建议吗?
答案 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;