IOS中定义成员变量有两种方法,一种是将变量声明为property,一种是直接声明为一个变量。
方法一:
@property (strong, nonatomic) NSString* userName;
方法二:
@implementation UserInfo {
NSString* userName;
}
使用方法一的时候系统会为我们自动生成一个Get函数和一个Set函数(隐式的),可以显示的在对应的类中声明这两个函数,Get一般用来懒加载使用,Set一般实现这个属性变化的时候需要影响的变化。其中使用self.userName会调用相应的get和set方法,userName只会直接修改属性本身。
需要注意的是:self.userName = xxx,会调用它的set方法,所以不能在他的set方法中调用这个函数,会死循环;set中需要手动调用userName来修改这个属性的值。
方法二就是一个变量值的直接修改。
注意:
直接访问变量存取效率会高一些;
如果要使用kvo属性必须要使用.赋值,因为kvo实际是拦截了set方法;