iOS基础总结之:成员变量、属性变量、局部变量、实例变量、全局变量,详解

前言

很早之前写的笔记啦,刚刚写博客的时候突然想发布出来。

一、成员变量

@interface MyViewController : UIViewController {
    UIButton *yourButton;
    int count;
    id data;
}

成员变量用于类内部,无需与外界接触的变量。成员变量默认是 protected,一般情况下,非子类对象无法访问因为成员变量不会生成 setget 方法,所以外界无法与成员变量接触。成员变量是定义在{}号中的变量,如果变量的数据类型是一个类则称这个变量为实例变量。 因为实例变量是成员变量的一种特殊情况,所以实例变量也是类内部使用的,无需与外部接触的变量,这个也就是所谓的类私有变量。

二、属性变量

@interface MyViewController : UIViewController
property (nonatomic, strong) UIButton *myButton;
end

属性变量是用于与其他对象交互的变量。 属性变量的好处就是允许让其他对象访问到该变量(因为属性创建过程中自动产生了 setget 方法)。 当然,你可以设置只读或者可写等,设置方法也可自定义。 现在大家似乎都不怎么喜欢用成员变量来定义类的变量, 都喜欢用属性变量来定义类的变量。把需要与外部接触的变量定义在 .h 文件中,只在本类中使用的变量定义在 .m 文件中

三、实例变量

实例变量本质上就是成员变量,只是实例是针对类而言, 编译器会自动为你生成以下划线开头的实例变量 _myButton ,也会自动为你生成 settergetter 方法。 如果 .m 文件中写了@synthesize myButton,那么生成的实例变量就是 myButton ;如果没写@synthesize myButton,那么生成的实例变量就是 _myButton

四、全局变量

全局变量是指在@implementation外定义的变量(在@implementation中定义也是可以但是一般不这么干)。

举例:

// 规范的
static int hu = 3; // 全局变量
NSString *str1 = @"S1ViewController"; // 全局变量

@implementation S1ViewController
@end

五、局部变量

-(void)viewDidLoad {
    // 局部变量
    NSArray *array = [[NSArray alloc] initWithObject:@“123”, nil];
}

局部变量是根据其生存周期定义的。在源文件中的 array ,其生命周期是在以 { } 为界限的代码块中,虽然它的名称与成员变量相同,但不是同一个变量。

你可能感兴趣的:(iOS基础总结之:成员变量、属性变量、局部变量、实例变量、全局变量,详解)