关于属性,成员变量的认识

关于属性和成员变量概念的说法,网上搜了很多,没找到特别明确的说,而且还更加混乱了。

根据自己的认识和从网上搜索的信息稍微总结一下:

看法1、从访问权限上区分

属性和成员变量说到底都是变量,只是他们的访问权限不同。

在.h文件的{}中声明的变量,默认是protect

在.m文件的interface(){}声明的变量,默认是private

在.m文件中声明的变量,在其他类中不可以调用;

在.h文件中声明的变量,在其他类中可以调用。

看法2、交互性的角度

  • 成员变量用于类内部,无需与外界接触的变量。
  • 根据成员变量的私有性,为了方便访问,所以就有了属性变量。属性变量的好处就是允许让其他对象访问到该变量。当然,你可以设置只读或者可写等,设置方法也可自定义。所以,属性变量是用于与其他对象交互的变量。

一些建议:

1.如果只是单纯的private变量,最好声明在implementation里.

2.如果是类的public属性,就用property写在.h文件里

3.如果自己内部需要setter和getter来实现一些东西,就在.m文件的类目里用property来声明

  • 成员变量用于类内部,无需与外界接触的变量。
  • 根据成员变量的私有性,为了方便访问,所以就有了属性变量。属性变量的好处就是允许让其他对象访问到该变量。当然,你可以设置只读或者可写等,设置方法也可自定义。所以,属性变量是用于与其他对象交互的变量。

属性:一般都包括对应的实例变量和setter、getter方法

.h中的interface的大括号{}之间的实例变量,.m中可以直接使用;

.h中的property变量,.m中需要使用self.propertyVariable的方式使用propertyVariable变量

一些建议:

1.如果只是单纯的private变量,最好声明在implementation里.

2.如果是类的public属性,就用property写在.h文件里

3.如果自己内部需要setter和getter来实现一些东西,就在.m文件的类目里用property来声明

  • 成员变量用于类内部,无需与外界接触的变量。
  • 根据成员变量的私有性,为了方便访问,所以就有了属性变量。属性变量的好处就是允许让其他对象访问到该变量。当然,你可以设置只读或者可写等,设置方法也可自定义。所以,属性变量是用于与其他对象交互的变量。

一些建议:

1.如果只是单纯的private变量,最好声明在implementation里.

2.如果是类的public属性,就用property写在.h文件里

3.如果自己内部需要setter和getter来实现一些东西,就在.m文件的类目里用property来声明

时间: 2024-10-23 08:20:42

关于属性,成员变量的认识的相关文章

【Java】+反射1+获取属性/成员变量 的名称及类型

扩展链接:[Java]+反射2+设置属性/成员变量 的值 1.目标类 2.获取目标群类中的属性及属性的类型 3.代码 1 @Test 2 public void testA() { 3 Class clazz = ZGXRequest.class; 4 // step1 获取类中所有的属性 5 Field[] fields = clazz.getDeclaredFields(); 6 for (Field field : fields) { 7 // step2 获取每个属性的类型(以点分割 需

福利->KVC+Runtime获取类/对象的属性/成员变量/方法/协议并实现字典转模型

我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型. 废话不多说,直接上代码: 1.工具类(其实就是NSObject的一个分类)头文件 1 #import <Foundation/Foundation.h> 2 3 @interface NSObject (YSRuntime) 4 5 /** 6 返回当前类的属性数组 7 8 @return 属

Category / Extention / 属性 / 成员变量 /

转载自:http://blog.csdn.net/itianyi/article/details/8618128 在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: @interface MyViewController :UIViewController { UIButton *myButton; } @property (nonatomic, retain) UIButton *myButton; @e

OC中成员属性 成员变量

比如用property声明一个变量属性 然后我们会为它用懒加载的方式重写get方法 然后我们在使用这个变量的时候,都是用self.itemArray,为什么这样用比较好呢,这是因为self.是对属性的访问,编译器在检测到用@property声明的属性时,会自动为属性生成setter和getter,如果自己重写setter或getter,则编译器会跳过自动生成,使用自定义的setter和getter,所以当用self.这种方式时(并在等号右边调用时),这时就会进入到我们自定义的懒加载方法.也就是说

对Objective-C相关的类、方法、属性、成员变量介绍

类的定义@interface FirstClass :NSObject@end//@interface表示声明的是一个类,“:”表示继承关系,@end类的结束类的实现@implementation FirstClass方法的声明+(void)print;-(id)init;//"+"表示声明的是一个类方法,由雷鸣调用//“-”表示声明的时实例方法,必须由类的对象来调用//不带参数的方法在调用时,会使用隐藏的self参数来访问实例变量的属性.声明带参数的方法:+(void)initWit

Objective-C——类、方法、属性、成员变量

有过相关编程语言基础,了解C++/java的相信对类的类.对象等概念是了解的.在此我也不做过多地赘述. 关于OC中类的定义及方法使用这块,OC定义了一套自己的规范 类的定义: @interface FirstClass :NSObject @end //@interface表示声明的是一个类,":"表示继承关系,@end类的结束 类的实现 @implementation FirstClass 方法的声明: +(void)print; -(id)init; //"+"

数组 面向对象 成员变量和局部变量额区别

一.数组 1.数组中常见的错误: 1.NullPointerExcepation : 空指针异常 原因:引用的类型变量没有指向任何的对象,在这种情况下还访问了它的属性和方法. 一个对象如果使用完了不会立马释放,只是将这个对象变为一个垃圾对象,由垃圾回收机制自己来释放.,我们没办法操作它释放. 2.ArrayIndexOutOfBoundsExcepation :数组下表越界. 二.面向对象 1.java也属于面向对象编程 : 2.面向对象的三大特征 : 封装,继承,多态.类,对象. 3.对象 :

6_面向对象基础、成员变量和局部变量的区别

一.面向对象的思想 面向对象特点:(1)更符合我们思想习惯的思想:        (2)可以将复杂的事情简单化:        (3)将我们从执行者变成了指挥者,角色发生了转换. 二.类与对象及其应用 1.事物和类的对应关系   事物      类   属性  ----------成员变量   行为  ----------成员方法 2.成员变量和成员方法   成员变量:和以前定义变量一样,存储位置放生了改变,在类中方法外   成员方法:和以前定义方法一样,只不过去掉了static. 3.类与对象

java中局部变量和成员变量的区别?

在类中的位置不同 成员变量:成员位置---在类中,方法外定义的变量 局部变量:在方法定义中,或者方法声明上的变量 在内存中的位置也不同 成员变量:在堆内存中 局部变量:在栈内存中 生命周期不同 成员变量:随着对象的创建而存在,随着对象的回收而消失 局部变量:随着方法调用而存在,随着方法的调用完毕而消失 初始化不同 成员变量:跟对象相关的,描述一个对象的属性(成员变量存在一个系统 默认初始化),当然也可以直接赋值 局部变量: 在使用之前,必须初始化,否则编译不通过 原文地址:https://blo

C# 字段、属性、成员变量 [转载]

一.定义与作用 1.字段(field):是C#类级别定义的,和方法同一级别. 一般用来类内部进行访问,充当一种类中的"全局变量"角色:或者配合属性来使用 2.属性:同样是C#类级别定义的,一般是供外部类访问的. 3.成员变量:"全局变量",在类中定义的变量,区别于在方法中定义的局部变量.它与字段属性不是同一级别概念,字段,属性都可以叫做成员变量. 二.使用 class Basic { private string FieldVar;//这是字段,在当前类中调用 pr