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的意思就是這個變量已經定義了,你只負責用就好了

相關文章
相關標籤/搜索