zoukankan      html  css  js  c++  java
  • 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的形式比较好。因为它封装了访问方法,加强了我们对变量的控制,也更面向对象些。

  • 相关阅读:
    NoSql数据库简介及Redis学习
    C++内存泄露
    实现堆排、快排、归并
    常见C/C++笔试、面试题(二)
    Linux的五种I/O模式
    设计模式之Iterator模式
    MapReduce简介
    PHP字符串函数试题
    PHP之curl函数相关试题
    PHP数学函数试题
  • 原文地址:https://www.cnblogs.com/ficow/p/5256693.html
Copyright © 2011-2022 走看看