我很难理解为什么在某些教程中将以下文本字段声明两次。
在.h文件中:
# include <UIKit/UIKit.h>
@interface MyViewController : UIViewController {
UITextField *name; // <----- What do I need this for? Is it the same as below?
}
@property (nonatomic, strong) IBOutlet UITextField *name; // <----- Same as this?
@end
起初我认为这就像一个实例变量,但它们只在.m文件中声明,对吗?
.m文件
#import "MyViewController.h"
@implementation UIViewController {
NSString *myString; // <----- This is an instance variable, right?
}
什么是“UITextField *名称;”对于?我不需要在前面使用@property的第二个吗?谢谢。
答案 0 :(得分:1)
如果您的目标是iPhone OS或64位Mac OS X,则无需为属性定义ivars。看看Dynamic ivars: solving a fragile base class problem
答案 1 :(得分:1)
这是一种古老的方式,只需使用属性即可。 如果同时声明两者,则必须使用@synthesize名称;在.m文件中,使self.name与name相同。 XCode4.2自动合成name = _name。因此,请在.m文件中尽可能使用self.name。
当你不想要实现setter和getter时,{}中的变量只用于内部或私有。