这是我班上关注的领域:.h
@interface TimerViewController : UIViewController <UITextFieldDelegate> {
IBOutlet UITextField *hourField,*minuteField;
}
@property (strong, nonatomic) IBOutlet UITextField *hourField,*minuteField;
@end
.m
@implementation TimerViewController
@synthesize hourField,minuteField;
@end
我的问题是,在应用程序崩溃并显示此日志之前,我可以多次使用文本字段(检索和设置属性):
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'-[__NSCFString setText:]: unrecognized selector sent to instance 0x1e1dafa0'
运行代码
[self.hourField setText:@"5"];
时会发生这种情况。当检查[self.hourField isFirstResponder]
是否具有相同类型的日志时,也会发生这种情况。控制台将文本字段视为
__NSCFString
,这使我认为它可能已被释放?与ARC一起运行,我一直使用合成访问器。以前从未遇到过此问题,也看不到我要去哪里。
最佳答案
我认为问题可能在于您如何声明变量。您不再需要@synthesize语句,并且通常您希望私有iVar的拼写与属性声明的拼写不同。要查看这是否是问题,只需将您的@property声明和@synthesize都删除,并以[hourField setText:@“ 5”]的形式访问hourField即可; 。另一种方法是完全删除@synthesize和iVar声明。
我要检查的其他事项是IBOutlet是否已连接到.xib或情节提要中的正确项目。
关于ios - UITextField可能发布得太早,我不知道在哪里以及为什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13614298/