成员变量和属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了成员变量和属性相关的知识,希望对你有一定的参考价值。

一个变量如果只想在当前类中使用,那么只需要让它作为成员变量就可以了。

一个变量如果想在类外使用,则还需要将其作为属性。技术分享

上图所示的职业,大脑,眼睛,嘴都属于对象的特征,大脑,眼睛和嘴是成员变量,职业就可以看做属性。

成员变量的声明方式:

@interface People : NSObject
{
    NSString *_peopleName;
    int _peopleAge;
    int _peopleSex;
}

一般来说,成员变量是不可以在外部类进行调用的,但是如果在声明成员变量时候加上@public,则声明的成员变量也可以在外部调用,但这种方法是不被推崇的:

@interface People : NSObject
{
   @public
    NSString *_peopleName;
    int _peopleAge;
    int _peopleSex;
}

在调用的时候,不能用点语法,只能用指向语法,下面是main函数的一段代码:

//不能使用点语法调用公有的成员变量
p1.peopleNanme
//指向语法
p1->_peopleName

属性的存在就是为了让类外可以访问成员变量,即属性就是成员变量的外部接口。

在老版本的Apple SDK声明成员变量和属性的时候,为了区别属性和成员变量,对同名的属性和成员变量,对成员变量前面加下划线。

而在新版本的苹果SDK中,在声明一个属性之后,苹果自动会生成一个加下划线的属性,在类内可以直接调用加下划线的属性,不必声明。因此在新版本中,成员变量没有必要在h文件声明了,只需要在m文件中书写即可。

以上是关于成员变量和属性的主要内容,如果未能解决你的问题,请参考以下文章

区分成员变量和类变量,this关键字,封装,静态方法和静态代码块,通通给我看懂(概念版) 后续有相关示例

区分成员变量和类变量,this关键字,封装,静态方法和静态代码块,通通给我看懂(概念版) 后续有相关示例

面向对象的成员: 实例变量 类变量 实例方法 类方法 静态方法 属性 私有

成员变量和局部变量

java 静态代码块 代码块 构造函数 静态成员变量 成员变量的初始化顺序

OC中在.h和.m中声明的属性和成员变量有何区别