我得到NSCFData resignFirstResponder - 发送到实例的无法识别的选择器。但为什么呢?
@interface { UITextField *Field; } @end
@implementation
-(BOOL) textFieldShouldBeginEditing:(UITextField*)textField {
Field = textField;
return YES;
}
-(void) viewWillDisappear:(BOOL)animated
{
[Field resignFirstResponder];
}
@end
我的调用堆栈
0 CoreFoundation 0x35f08c7b __exceptionPreprocess + 114 1874 1 libobjc.A.dylib 0x30186ee8 objc_exception_throw + 40 1875 2 CoreFoundation 0x35f0a3e3 -[NSObject(NSObject) doesNotRecognizeSelector:] + 98 1876 3 CoreFoundation 0x35eaf467 ___forwarding___ + 506 1877 4 CoreFoundation 0x35eaf220 _CF_forwarding_prep_0 + 48 1878 5 MegaDish 0x000187eb -[MapViewController viewWillDisappear:] + 34 1879 6 UIKit 0x3389d438 -[UINavigationController viewWillDisappear:] + 112
答案 0 :(得分:2)
您的文字字段已发布,可能在-viewDidUnload
。然后在内存中的同一位置分配了NSData
个对象。实施-textFieldDidEndEditing:
并将Field
ivar清除为nil
,问题应该得到解决。
答案 1 :(得分:1)
大概你需要保留Field。
答案 2 :(得分:1)
@ Jonathan回答的替代方法是在取得所有权后保留文本字段,并在完成后将其释放。
另请注意:objective-c中的变量通常以小写字母开头。类名以大写字母开头。