self.variable 和 _variable 的区别

之前习惯于_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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 绿阴庭院春残, 怯衣单。 不信落花天气晚风寒。 相逢处, 佯不语, 共凭欄。 笑指水边灯火隔帘看。
    丁晓點阅读 426评论 0 15
  • 我真的是太孤独了吧。真的是太孤独了
    山有木之阅读 135评论 0 0
  • ALSNDMGR.CPL AC97 Audio组态设定 appwiz.cpl 添加和删除程序 bthprops.c...
    jianghu000阅读 2,246评论 0 1
  • 文/轻轻风 今天是一年一度的中秋佳节,人常说每逢佳节倍思亲,我非常希望每年的这个时候家人都能团聚在一起,好好的过一...
    南城半世阅读 579评论 0 0