在这样的事情中:
@interface Control_FunViewController : UIViewController {
UITextField *nameField;
UITextField *numberField;
}
@property (nonatomic, retain) IBOutlet UITextField *nameField;
@property (nonatomic, retain) IBOutlet UITextField *numberField;
我理解“UITextField * nameField;”是一个实例变量,“@ property ...”是一个属性。但是这些个人的事情做了什么?
我想我真正要问的是如何在实现文件中使用该属性(.m)
答案 0 :(得分:2)
实例变量是实际变量,而属性相当于
- (UITextField *)nameField;
- (void)setNameField:(UITextField *)newTextField;
并且完全可选。当@synthesize变量时,编译器也会使用它们来准确理解你想要的内容。基本上,属性和相应的@synthesize(或自定义实现)允许OTHER类访问变量,并且完全是可选的。事实上,根据标准的面向对象的封装原则,通常建议不要使用属性,除非您特别希望外部类使用它们。但是,您仍然需要Interface Builder来识别UITextFields(可能),这就是为什么我们通常将IBOutlet装饰器放在ivar声明之前,而不是属性。