所以我是目标c的新手,对于一般的编程几乎是新的。
无论如何,在我的简单程序中,我控制 - 将我的UITextField从故事板拖到我的ViewController.m中,认为这是一种创建在输入/点击字段时调用的方法的方法。不久我就删除了这个方法。
运行模拟器时,键盘会出现,文本字段已经聚焦。如果我点击屏幕上的任何其他位置,则会导致崩溃,从而导致我已删除的选择器出现无法识别的选择器错误。
我的ViewController.h中没有任何内容,其余的代码似乎没问题。如果我在没有指令的情况下重新添加选择器,它会按预期运行并且键盘会重新启动。我的问题是,为什么我会收到此错误?
答案 0 :(得分:0)
获得崩溃的输出会更有帮助。有了这个说我怀疑你的故事板仍然连接了一个插座,参考你创建的功能或插座。从故事板中单击文本字段,然后导航到连接检查器(视图 - >实用程序 - >连接检查器)。从那里你应该能够看到你所做的任何联系。单击x以删除它。
连接检查器是右上角的图标,右侧的箭头位于圆圈内。
编辑:
我意识到你问为什么会这样,而不是如何解决它。无法识别的选择器意味着它的声音。您的代码,在这种情况下,故事板试图调用方法或访问未实现该方法的对象上的变量。通常,编译器会在代码中捕获这些类型的错误,但有些情况下它无法捕获,就像您遇到的那样。例如,可以将NSArray对象分配给声明为其他的变量,例如NSString,如下所示
id object = @[@"hello", @"world"];
NSString *notAString = object;
[notAString length];
尝试运行它会因类似的错误而崩溃,因为NSArray实现了length方法,或者在Objective-c中,它没有响应选择器“length”。
答案 1 :(得分:0)
最典型的是:
在IB中选择您的UITextField,转到Connections检查器并删除与已删除方法的ghost连接。