• Objective-C 中self.与_访问方式的区别


    Objective-C中属性self.a与_a访问的区别:

    在OC中我们可以通过指令@property定义属性。

    OC对属性封装了许多方法,同时也会自动实现一些方法,相比实例变量,感觉更加面向对象些。

    一般定义属性的方法如下,在Class Test中定义属性int a。

    @interface Test:NSObject
    @property int a;
    -(void) changeAValue:(int) newValue;
    @end


    在类的实例方法中,我们可以用下面两种方式来访问a属性:

    1、直接用属性名访问:

    -(void) changeAValue:(int) newValue
    {
        _a = newValue;  // 默认生成的属性成员变量前面会自动加上“_”前缀
    }


    2、通过self.a的形式访问

    -(void) changeAValue:(int) newValue
    {
        self.a = newValue;
    }

    这两种访问方式有区别吗?答案是肯定的。

    通过第一种方式访问,其实是类似于C++的访问方式,是直接访问的实例变量并赋值。而第二种方式,并不像其表面那么直观,它其实是通过调用编译器自动生成的对于a变量的赋值函数来实现的。即

    -(void) changeAValue:(int) newValue
    {
        self.a = newValue; // 此处实际是调用 [self setA:newValue];
    }

    个人感觉在类中调用自身的属性,还是用self.a的形式比较好。因为它封装了访问方法,加强了我们对变量的控制,也更面向对象些。

  • 相关阅读:
    js delete 操作符
    js中contains()方法的了解
    绝对地址、相对地址、/、./、../之间的区别
    关于应用版本号的更迭
    js事件的绑定与移除
    js实现阶乘
    圆角和渐变
    css3用到知识点小结
    font-size:0的妙用,用于解决inline或者inline-block造成的间隙
    js怎么把数字转化为字母(A,B.....AA,AB,..)
  • 原文地址:https://www.cnblogs.com/ficow/p/5256693.html
Copyright © 2020-2023  润新知