self.variable 和 _variable 的区别

2016-07-14  本文已影响35人  xkevin
之前习惯于_variable这样访问变量,因为编写的代码量少~ 但实际上是有区别的
  1. self.variable 会调用getter或setter方法,
  2. 而_variable 是直接访问实例变量

[建议除过init方法,和自定义的set 方法内,都使用self访问,因为如果在getter 和setter 中做了额外的判断和处理,那直接访问就会跳过这部分]

具体来看代码:
在.h文件中声明一个属性

@property (nonatomic, strong) NSString *testStr;

在.m文件中重写了该testStr属性的setter方法

- (void)setTestStr:(NSString *)testStr {
_testStr = [NSString stringWithFormat:@"hello %@",testStr];
}

在方法体里用两种不同的方式去赋值

  //在method体内访问 testStr
  self.testStr = @"abc";
  NSLog(@"self.testStr:%@",self.testStr);// hello abc
  _testStr = @"abc";
  NSLog(@"_testStr:%@",_testStr);// abc
上一篇下一篇

猜你喜欢

热点阅读