美文网首页
iOS 开发 成员变量,实例变量,属性

iOS 开发 成员变量,实例变量,属性

作者: 我是卖报的小行家 | 来源:发表于2020-12-14 16:11 被阅读0次

1.成员变量、实例变量、属性变量的联系

@interface MyViewController :UIViewControlle
{

    UIButton *yourButton;
    int count;
    id data;
}
@property(nonatomic, strong) UIButton *myButton;
@end

在{ } 中所声明的变量都为成员变量。 所以yourButton、count、data都是成员变量。既然如此,实例变量又是什么意思呢?实例变量本质上就是成员变量,只是实例是针对类而言,实例是指类的声明。{ }中的yourButton就是实例变量。id 是OC特有的类,本质上讲id等同于(void *)。所以id data属于实例变量。

yourButton 成员变量/实例变量 count 成员变量 data 成员变量/实例变量
除去基本数据类型int float ....等,其他类型的变量都叫做实例变量。

成员变量用于类内部,无需与外界接触的变量。因为成员变量不会生成set、get方法,所以外界无法与成员变量接触。根据成员变量的私有性,为了方便访问,所以就有了属性变量。属性变量的好处就是允许让其他对象访问到该变量(因为属性创建过程中自动产生了set 和get方法)。当然,你可以设置只读或者可写等,设置方法也可自定义。所以,属性变量是用于与其他对象交互的变量。

综上所述可知:成员变量是定义在{}号中的变量,如果变量的数据类型是一个类则称这个变量为实例变量。因为实例变量是成员变量的一种特殊情况,所以实例变量也是类内部使用的,无需与外部接触的变量,这个也就是所谓的类私有变量。而属性变量是用于与其他对象交互的变量。

但是,现在大家似乎都不怎么喜欢用成员变量来定义类的变量,都喜欢用属性变量来定义类的变量。把需要与外部接触的变量定义在.h文件中,只在本类中使用的变量定义在.m文件中。

首先来区别一下实例变量、成员变量的区别:

可以看到在接口 @interface 括号里面的统称为”成员变量”,实例变量是成员变量中的一种!

实例变量的英文翻译是 Instance Variable (object-specific storage)

实例的英文翻译为Instance(manifestation of a class) 说的是“类的表现”,说明实例变量应该是由类定义的变量!

除去基本数据类型int float ....等,其他类型的变量都叫做实例变量。

****实例变量+基本数据类型变量=成员变量****

二、类别中的属性property

类与类别中添加的属性要区分开来,因为类别中只能添加方法,不能添加实例变量。经常会在ios的代码中看到在类别中添加属性,这种情况下,是不会自动生成实例变量的,必须自己实现 get/set 方法。

注意一点,匿名类别(匿名扩展)是可以添加实例变量的,非匿名类别是不能添加实例变量的,只能添加方法,或者属性(其实也是方法)。

转载于此篇华文 :https://blog.csdn.net/weixin_34212189/article/details/91517330?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

相关文章

网友评论

      本文标题:iOS 开发 成员变量,实例变量,属性

      本文链接:https://www.haomeiwen.com/subject/opjmiktx.html