property (nonatomic,copy) NSString *propertyName; self.propertyName 是对属性的拜访; _propertyName 是对部分变量的拜访。 其1、@property的声明中,编译器正在天生g]

@property (nonatomic,copy) NSString *propertyName;

self.propertyName 是对属性的访问;

_propertyName 是对局部变量的访问。

其一、@property的声明中,编译器在生成getter,setter方法时是有优先级的,它首先查找当前的类中用户是否已定义属性的getter,setter方法,如果有,则编译器会跳过,不会再生成,使用用户定义的方法。

也就是说你在使用self.propertyName 时是在调用一个getter方法。

self.propertyName 会让计数器+1;

其二、_propertyName,是直接调用变量,不通过getter方法。

_propertyName是类似于self->_propertyName。

用self.propertyName 是更好的选择,因为这样可以兼容懒加载,同时也避免了使用下划线的时候忽视了self这个指针,后者容易在block中造成循环引用。

同时,使用 _是获取不到父类的属性,因为它只是对局部变量的访问。

最后总结:self方法实际上是用了get和set方法间接调用,下划线方法是直接对变量操作。

转载于:https://www.cnblogs.com/lihaibo-Leao/p/5539622.html

iOS中self.xxx 和 _xxx 下划线的区别相关推荐

  1. Python中对象名称前单下划线和双下划线有啥区别

    单下划线 在一个类中的方法或属性用单下划线开头就是告诉别的程序这个属性或方法是私有的.然而对于这个名字来说并没有什么特别的. 引自PEP-8: 单下划线:"内部使用"的弱指示器.比 ...

  2. ios 按钮下面加下划线_如何在iOS按钮上的文字添加下划线

    在开发ios的时候很多用户们都会想如何在iOS按钮上的文字添加下划线,那么接下来的内容中我们就一起去看看在iOS按钮上的文字添加下划线的方法. 问题:实现下图中右侧的按钮文字效果 方法: [MyToo ...

  3. Word7中尾部空格不能显示下划线的解决方法

    Word2007中尾部空格不能显示下划线的解决方法    1.  调出"段落"对话框,将"中文版式"->"允许西文在„„换行"打勾.这 ...

  4. css中怎么消除a的下划线,如何使用css去掉a标签的下划线?(代码详解)

    写html超链接的时候,超链接总是自带下划线,如果不需要下划线,我们需要将其去掉,下面我们就来说一下怎么去掉下划线. 我们在使用超链接的时候,下划线总是伴随着出现,从视觉上来说有着下划线的a标签总是感 ...

  5. python 里面的单下划线与双下划线的区别

    python 里面的单下划线与双下划线的区别 Python 用下划线作为变量前缀和后缀指定特殊变量. _xxx 不能用'from moduleimport *'导入 __xxx__ 系统定义名字 __ ...

  6. python双划线_python 单下划线与双下划线的区别

    原标题:python 单下划线与双下划线的区别 python中下环线共有5中 下面开始一一介绍 1.单前导下划线 _xxx: 变量前面使用单下划线,用于指定该名称为"私有".为方便 ...

  7. 浅谈python 里面的单下划线与双下划线的区别

    更新时间:2017年12月01日 10:30:13   作者:空气中的臭氧 这篇文章主要介绍了浅谈python 里面的单下划线与双下划线的区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起 ...

  8. java双下划线改单下划线_单下划线与双下划线的区别

    内容目录 单下划线与双下划线的区别 ​ Python用下划线作为前缀和后缀指定特殊变量和定义方法,主要有如下四种形式: 单下划线(_) 名称前的单下划线(如:_name) 名称前的双下划线(如:__n ...

  9. python前后双下划线_【Python】单下划线与双下划线的区别

    Python 用下划线作为前缀和后缀指定特殊变量和定义方法,主要有如下四种形式: l 单下划线( _ ) l 名称前的单下划线(如: _name ) l 名称前的双下划线(如: __name ) l ...

最新文章

  1. 中的count函数_关于计数的5个函数都不掌握,那就真的Out了!
  2. 算法训练 最大的算式
  3. 你想使用自己编译的内核进行工作吗?
  4. Integer及String的equals及==注意示例,涉及自动拆箱、自动装箱以及equals源码分析
  5. yum 和 rpm安装mysql彻底删除
  6. 玩转CSS3(一)----CSS3实现页面布局
  7. [剑指offer]面试题第[58-2]题[JAVA][左旋转字符串][拼接]
  8. 纯后台生成highcharts图片有哪些方法?
  9. Java-用IDEA创建Java项目
  10. 云小课 | 云硬盘不用了如何处理?
  11. SQL Server 2016完整数据库备份的演练
  12. Django-manage.py
  13. 布局的几种方式(静态布局、自适应布局、流式布局、响应式布局、弹性布局)...
  14. 华为荣耀V9手机通过在Fastboot模式写ramdisk.img来获取ROOT权限 | 华为荣耀V9怎么获取ROOT权限 | 华为荣耀V9怎么用面具Magisk做ROOT权限
  15. 计算机网络学习笔记11(P2P)
  16. 惊艳呈现-百度搜索手机客户端-设计项目分享
  17. eMMC Partition
  18. Python中安装GDAL
  19. 最简单dophinscheduler 集成datax步骤
  20. 《AutoCAD 2014中文版实用教程》导读

热门文章

  1. 李洋疯狂C语言之关于自增自减遇到的一些问题
  2. JDK1.8使用Dubbo时需注意
  3. thinkCMF----导航高亮显示
  4. jquery easyui DataGrid 数据表格 属性
  5. 陶哲轩实分析 定理 13.1.5
  6. Oracle PL/SQL匿名块(三)
  7. 手把手教用XNA开发winphone7游戏(三)
  8. 修练8年C++面向对象程序设计之体会
  9. python几种括号表示的类型
  10. JAVA中的内部类与C++内部类的区别