成员变量和属性

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

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

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

成员变量的声明方式:

@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文件中书写即可。

时间: 2024-10-08 00:54:38

成员变量和属性的相关文章

Objective-C Runtime 运行时之二:成员变量与属性

类型编码(Type Encoding) 作为对Runtime的补充,编译器将每个方法的返回值和参数类型编码为一个字符串,并将其与方法的selector关联在一起.这种编码方案在其它情况下也是非常有用的,因此我们可以使用@encode编译器指令来获取它.当给定一个类型时,@encode返回这个类型的字符串编码.这些类型可以是诸如int.指针这样的基本类型,也可以是结构体.类等类型.事实上,任何可以作为sizeof()操作参数的类型都可以用于@encode(). 在Objective-C Runti

runtime第二部分成员变量和属性

接上一篇 http://www.cnblogs.com/ddavidXu/p/5912306.html 转载来源http://www.jianshu.com/p/6b905584f536 http://southpeak.github.io/2014/10/30/objective-c-runtime-2/ 比较实用的内容都用颜色的字标记,并配有代码,并在末尾放上代码demo. 类型编码(Type Encoding) Objective-C不支持long double类型.@encode(lon

Java成员变量与属性的区别,简单最易懂的解释!!!

例一: 一个Student pojo类: public class Student{ private String name; private int age; public String getName(){ return this.name; } public void setName(String name){ this.name = name; } public int getAge(){ return this.age; } public void setAge(int age){ t

Objective-C中类的成员变量与属性

在Objective-C的类与对象的概念中. 成员变量与属性的区别与联系一直没有搞清楚. 直到学习了慕课网上的这个课程Objective-C面向对象初体验, 才算真正有了点感觉了. 最关键的结论就是: 类内使用成员变量{}, 类外使用属性@property. 成员变量 成员变量及其get方法. 首先, 我们来看下基本的类成员变量及其使用. // People.h @interface People : NSObject { NSString *_peopleName; } @end 在.m中不做

刨根问底Objective-C Runtime(4)- 成员变量与属性

http://chun.tips/blog/2014/11/08/bao-gen-wen-di-objective[nil]c-runtime(4)[nil]-cheng-yuan-bian-liang-yu-shu-xing/ 上一篇笔记讲述了objc runtime中消息和Category的细节,本篇笔记主要是讲述objc runtime的 成员变量和属性. 习题内容 下面代码会? Compile Error / Runtime Crash / NSLog…? @interface Sark

类的成员变量和属性描述

0x 01 .类的属性 property 类的属性即是通过@property声明的属性.属性是类型为objc_property的一个结构体.该结构体封装了属性的信息 比如属性的名字,属性的类型,属性的可读写,非原子/原子属性等. 1).获取一个类的属性列表方法:OBJC_EXPORT objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount)入参是一个类的class对象,一个是用于统计属性数量的整形数的地址

Objective-C之成魔之路【8-訪问成员变量和属性】

郝萌主倾心贡献,尊重作者的劳动成果.请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 訪问成员变量 从面向对象的封装角度考虑问题, 要想訪问类中的成员变量, 是要通过方法訪问的, 成员变量前面要有作用域限定符(protected, public, private) , 这些存取权限修饰符我们将在后面介绍. 成员变量的訪问, 是通过读取方法(getter) 和设定方法(setter). 訪问成员

iOS开发中 类、对象、实例变量、成员变量、属性变量等区别和关系

类(class):具有相同属性和行为等同一类元素等总称,类是一个抽象的概念. 区分是类还是对象,看它能否继续被细分. 在OC中,类是表示对象类型的结构体,对象通过类来获取自身的各种信息.类由两个部分组成:*.h和*.m文件组成. *.m文件中 implemention部分是类的实现部分,内部包含类中的各种信息,包括各种实例方法或类方法. 类别( category):是为现有的类添加新方法的方式,通常以"类名称+类别名称"来命名. 类别中不能添加新的实例变量.但是可以在类别中添加属性.

Objective-C之成魔之路【8-访问成员变量和属性】

重开发者的劳动成果,请勿转载 访问成员变量 从面向对象的封装角度考虑问题, 要想访问类中的成员变量, 是要通过方法访问的, 成员变量前面要有作用域限定符(protected, public, private) , 这些存取权限修饰符我们将在后面介绍. 成员变量的访问, 是通过读取方法(getter) 和设定方法(setter). 访问成员属性: 可以使用点运算符.,或发送消息[] 以上一节中的音乐类为例子: Song.h文件 @interface Song : NSObject { NSStri