0

以下是我班上关注的领域:

.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]检查是否使用相同类型的日志时也会发生这种情况。

控制台将文本字段视为 a __NSCFString,这让我认为它可能已被释放?

与 ARC 一起运行,我总是使用合成访问器。以前从未遇到过这个问题,也看不出我哪里出错了。

4

1 回答 1

1

我认为问题可能与您声明变量的方式混淆。您不再需要 @synthesize 语句,并且通常您希望私有 iVar 的拼写与您的属性声明不同。要查看这是否是问题,请删除您的 @property 声明和您的 @synthesize 并简单地访问 hourField [hourField setText:@"5"]; . 另一种方法是完全删除 @synthesize 和 iVar 声明。

其他我要检查的是 IBOutlet 是否连接到您的 .xib 或情节提要中的正确项目。

于 2012-11-28T21:19:16.940 回答