首先,看一下两种方式分别是如何定义一个变量的:
1、在 @interface :NSObject{} 的括号中,当然NSObject 是指一个父类,可以是其它。
形式如下:
@interface 类名:父类{
NSString *strName;
}
2、另外一种是直接在@interface:NSSObject{}括号之后,用@property去定义一个变量。
形式如下:
@interface 类名:父类{
// NSString *strName;
}
@property (assign,readonly) NSString *strName;
在第二种方式中,有的人习惯在这两个地方同时声明变量,即还声明了红色注释的那行。其实,这样写是没有必要的。
那么,这两种方式定义的变量有什么区别?
区别如下:
1、只在@interface中定义变量的话,你所定义的变量只能在当前的类中访问,在其它类中是访问不了的;而用@property声明的变量可以在外部访问。
访问方式:直接使用私有变量的名称就可以访问。
2、用@property声明的变量,一般要在.m文件中用@synthsize去合成相应的setter,getter方法。
如:@synthsize strName=_strName;而且可以使用“self.变量名”的方式去读写变量。而用@interface的方式就不可以。
访问方式:“self.变量名”或者“[self set变量名]”