objectiveC【语法】修饰符 static extern const

const

const最好理解,修饰的东西不能被修改
指针类型根据位置的不一样能够理解成3种状况:

I 常量指针

// 初始化以后不能赋值,指向的对象能够是任意对象,对象可变。
NSString * const pt1;

II 指向常量的指针

// 初始化以后能够赋值,即指向别的常量,指针自己的值能够修改,指向的值不能修改
const NSString * pt2;

III 指向常量的常量指针

const NSString *  const pt3;

extern

在SplashViewController.m中定义一个变量是这样的java

#import "SplashViewController.h"objective-c

NSString* meString=@"123";spa

@implementation SplashViewController指针

// NSString* meString=@"123";对象

.................作用域

这两 个地方都行io

 

若是在另外的类iTennisViewController.m中要用到这个类中的meString时只需在iTennisViewController.m中写成这样class

#import "iTennisViewController.h"import

extern NSString* meString;变量

@implementation iTennisViewController

便可

这样你在iTennisViewController.m中直接打印meString,你会发现 是123,固然你也能够对meString从新斌值 ,就是说meString虽然定义在SplashViewController.m中但好像是公共的,也称为全局变量吧

static

static

   // static变量同一个类全部对象中共享,只初始化一次

#import "SecondViewController.h"

static int count;

@implementation SecondViewController;

.......

 

-(void)viewWillAppear:(BOOL)animated

{

    [super viewWillAppear:animated];

     NSLog(@"viewWillAppear is %d",count);

    count+=1;

}

这样你每进入一次界面就会发现count加1

除 非程序彻底退出重启,count才会清除,objective-c中用static修饰的变量和java中的静态变量是有区别的,其不能经过类名直接访 问,固然你想直接访问也是能实现的在.m中写一个类方法反回count就好了,并且其做用域是其本类,不能扩展到其余类中

const

    // static const变量同static的结论I,只是不能修改了,可是仍是不一样的对象

    // extern const变量只有一个对象,标准的常量的定义方法

    // extern的意思就是这个变量已经定义了,你只负责用就好了

相关文章
相关标签/搜索