iOS 成员变量、实例变量、property的区别和联系

在iOS的第一个版本时,property是OC语言的一项新特性,在声明property之前必须首先声明与之对应的成员变量。

@interface ViewController : UIViewController
{
    UIButton * button;
}

@property (nonatomic, strong) UIButton * button;
@end

在iOS5后,苹果将默认编译器由GCC转换为LLVM(low level virtual machine),从此就不需要为属性声明成员变量了。LLVM如果发现一个属性没有匹配的实例变量,它将自动创建一个以下划线开头的成员变量,同时需要和@synthesize(写在.m文件中,编译器会自动生成对应的set和get方法)搭配使用。

而在下面的代码中:

@interface ViewController : UIViewController
{
    UIButton * button;
    int count;
    id data;
}

@property (nonatomic, strong) UIButton * button;
@end

在{ }内所声明的变量都是成员变量,所以button、count、data都是成员变量。因为成员变量没有set、get方法,所以成员变量用于类内部,无法与外界接触,也就是说,成员变量是类专属的、私有的。

那实例变量是什么呢?

实例变量本质上是成员变量,是成员变量的一种特殊情况,实例变量本质上就是成员变量,只是实例是针对类而言,实例是指类的声明。{ }中的button和data是实例变量(以为id是OC特有的类,本质上江id等同于(void *))

综上所述:
成员变量是定义在{ }中的变量,是类私有。包含实例变量和基本数据类型变量。
实例变量是成员变量的一种特殊情况,其类型是OC的一个类。
property是用于和其他对象进行交互的变量,在声明property时,编译器会自动创建一个以下划线开头的成员变量

你可能感兴趣的:(iOS 成员变量、实例变量、property的区别和联系)