IOS 成员变量,全局变量,局部变量定义,static与extern的区别

IOS 成员变量,全局变量,局部变量定义,static与extern的区别

1,先说定义java

1)成员变量定义:生存与该类的生命周期,变量存活周期跟你定义的该类实体对象同样;做用域是整个实体对象;能够在h文件中声明或者在m文件中@implementation上面添加的函数

#import “S1ViewController.h”学习

@interface S1ViewController ()atom

//这里作声明spa

@end对象

@implementation S1ViewControllerblog

@end接口

举例:S1ViewController.h文件中定义生命周期

@interface S1ViewController : UIViewControllerip

{

NSString* sttr2;//S1ViewController实体对象的成员变量

}

@property(nonatomic,retain) NSString* sttr2;//定义点语法的快捷操做setter 与 getter方法

@end

注明:在h文件中定义的变量,在外部可见

.h声明了类,至关于java的接口,在这里interface块外声明的函数和属性都是外部可见的,可是在块内的貌似是私有的

.m里面的全部东西都是对外封闭的这样就是有效的源码的开源与闭源;

2)全局变量

定义:在@implementation外定义的变量(在@implementation中定义也是能够可是通常不这么干)

举例:

//规范的

staticinthu=3;//全局变量

NSString*sttr1=@”S1ViewController”;//全局变量

@implementationS1ViewController

@end

//不规范的

@implementation S1ViewController

static int hu=3;//全局变量

NSString*sttr1=@”S1ViewController”;//全局变量

@end

全局变量分为两种:

1)static修饰的也称私有全局变量,只在该源文件中可用

学习过Java 或者 C 语言的朋友应该很清楚static关键字吧?在某个类中声明一个static 静态变量, 其余类中想使用它或者修改它不用new 这个对象 ,直接使用它的类名方可直接拿到这个静态变量的对象,遍能够在其余类中任意修改这个变量的数值。它是存于全局变量区,生命周期和程序相同,static只在声明的类中可见。

在声明的类中结束后,再次使用仍是以前的值。

在Objective-C 的语法中声明后的static静态变量在其余类中是不能经过类名直接访问的,它的做用域只能是在声明的这个.m文件中 。不过能够调用这个类的方法间接的修改这个静态变量的值

static关键字声明的变量须放在implementation外面,或者方法中,若是不为它赋值默认为0,它只在程序开机初始化一次(并非该类实例化后才初始化的)

将static静态变量写在方法中,它的初始化也是在程序开机时,程序一旦启动之后static是不能在建立的。因此程序在这里调用了5次这个方法,sCount的值并无由于从新建立static sCount而改变,而是将sCount的值一直存在内存中。

2)没有static修饰的 ,在任何源文件中均可以用,注意:定义没有static的全局变量,命名必定要很独特,才能区分与其余源文件中的全局变量,若是出现跟其余源文件同名的全局变量,则会报错误

例如:

NSString*sttr1=@”S1ViewController”;//全局变量

在其余文件若是要用该全局变量,在前面加externNSString*sttr1;便可使用了

相关文章
相关标签/搜索