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