美文网首页
iOS 属性访问点语法(通过属性访问)与下划线语法(直接访问)的

iOS 属性访问点语法(通过属性访问)与下划线语法(直接访问)的

作者: 福尔摩罗 | 来源:发表于2018-11-22 14:49 被阅读0次

ios 声明的每个属性 提醒都会给我们生成 setter 和getter 俩个方法(自己重写或者表明@dynamic关键字除外),而且在oc语法中,这俩个方法的方法名是严格控制的,除非在属性声明时 自己声明方法名如下

@property (nonatomic,getter=isOn) BOOL on;

可以小幅度修改方法名,其余的不管是我们重写也好,还是系统默认也好,都会严格遵守方法名,在系统自动生成的setter方法中,会把属性值用下划线命名,(声明@synthesize 关键字 系统会自动生成俩个方法),这时 我们可以通过下划线(_on)直接访问属性(以下称下划线访问为直接访问),所以在直接访问时不会重新执行setter和getter方法,这时候我们如果想要属性执行setter和getter方法时就需要用点语法(self.on)

总结:直接访问和 点语法的区别在于,直接访问不会执行setter和getter方法,因为是直接访问生成后的属性所以访问效率快,而点语法会执行setter和getter方法,所以建议在对象内部尽量直接访问实例变量,在外部用点语法,另外需要执行懒加载的时候一定要用点语法来走setter方法,直接访问永远也不会执行。

相关文章

  • iOS 属性访问点语法(通过属性访问)与下划线语法(直接访问)的

    ios 声明的每个属性 提醒都会给我们生成 setter 和getter 俩个方法(自己重写或者表明@dynam...

  • 2021-04-23

    .点语法和_下划线 .点语法:调用属性的setter/getter方法,而不是直接访问成员变量。 下划线:只是访问...

  • #import @class 的区别

    关键词:#import、#class、class-continuation 分类、点语法(直接访问还是通过属性访问...

  • 类与对象

    1)属性的定义语法同变量,示例:访问修饰符属性类型属性名;这里老师简单的介绍访问修饰符:控制属性的访问范围有四种访...

  • 数据属性&访问器属性的一些细节记录

    (1)数据属性和访问器属性都有直接字面量语法,当用直接字面量语法定义时,两种属性共有的[[Configurable...

  • iOS属性

    属性与实例变量的区别: 属性无法直接访问对象的内部状态,但提供了访问这类数据的的方便机制 1.属性声明 语法: @...

  • 第二部分 对象

    3.1 语法 文字语法 构造形式: 3.3.2 属性与方法 如果访问的对象属性是一个函数,可说成“方法访问”。但从...

  • Javascript学习笔记——4.4 属性访问表达式

    属性访问表达式运算得到一个对象属性或一个数组元素的值。 属性访问的两种语法: 如果命名的属性不存在,那么整个属性访...

  • 点语法与self关键字

    1.点语法 如果给属性提供了getter和setter方法, 那么访问属性就又多了一种访问方式 , 点语法 点语法...

  • 第 7 条:在对象内部尽量直接访问实例变量

    强烈建议:读取实例变量时直接访问;设置实例变量时通过属性。 示例代码: 方法实现(点语法形式): 直接访问实例变量...

网友评论

      本文标题:iOS 属性访问点语法(通过属性访问)与下划线语法(直接访问)的

      本文链接:https://www.haomeiwen.com/subject/lyslqqtx.html