IOS開發之 static變數

2021-09-01 19:31:23 字數 1548 閱讀 6910

objective-c 支援全域性變數

主要有兩種實現方式:

(2)另外一種就是使用單例實現。

在objective-c中如何實現像c++中那樣的靜態成員變數呢?

你需要做的是在乙個類a的implementation(.m或者.mm)檔案中定義乙個static變數,然後為a類定義靜態成員函式(class method,也就是類方法)來操作該變數。

這樣在其它類中你就不需要建立a類的例項來對static變數進行訪問。雖然該static變數並不是a類的靜態成員變數,但是也算達到了同樣的效果。static變數的作用域被限制在單一的檔案中。**可以如下所示:

@inte***ce example : nsobject

- (id)init;

+(int)instancecount;

@end

#import "example.h"

static int count;

@implementation example

-(id)init

return self;

}

+(int)instancecount

@end

上面的例子中你就可以通過[example instancecount]對靜態變數count進行訪問,無須建立例項。

[size=medium][b]myclass.h

警告: static 寫在inte***ce外面編譯是沒有錯誤的,但是編譯器會報警告,這麼說這樣的寫法是不被編輯器認可的。

錯誤:static 寫在inte***ce裡面會直接報錯,顯然這樣的語法是不被認可的。[/b][/size]

+(void) addcount; 各位朋友們注意一下這法方法前面的+號。 它的意思是標緻這個方法為靜態方法,標誌+號後不用建立這個物件通過類名可以直接呼叫這個靜態方法。 而之前方法前用過的-號,標誌-號後的方法必須通過本類的物件或者在本來中才可以使用。

#import 

//警告

//static int scount ;

@inte***ce myclass : nsobject

//static int scount;

} +(void) addcount;

@end

myclass.m

static關鍵字宣告的變數必須放在implementation外面,或者方法中,如果不為它賦值預設為0,

它只在程式開機初始化一次。

+(void)addcount 因為標識了+號,所以這個方法無需使用這個類的物件呼叫。

直接使用類名方可呼叫這個方法。

#import "myclass.h"

static int scount = 100;

@implementation myclass

+(void)addcount

@end

[url]

細說IOS中的靜態變數static

static在程式執行中只初始化一次,也就是說被static標記的變數的記憶體位址是唯一確定的,不會改變,舉個例子說明。void viewdidload int add 列印結果 我們發現count的位址4次列印都相同,也就是說系統只對count初始化一次,只分配一次記憶體位址,所以count的值每...

static 變數和static 函式

在c語言程式設計中,static的乙個作用是資訊遮蔽!比方說,你自己定義了乙個檔案 該檔案中有一系列的函式以及變數的宣告和定義!你希望該檔案中的一些函式和變數只能被該檔案中的函式使用,那麼,你可以在該函式 變數的前面加上static,代表他們只能被當前檔案中的函式使用!而在c 中,用static來作...

Static 變數和Static函式

static變數和static函式 一 static 變數static變數大致分為三種用法 1.用於區域性變數中,成為靜態區域性變數.靜態區域性變數有兩個用法,記憶功能和全域性生存期.2.用於全域性變數,主要作用是限制此全域性變數被其他的檔案呼叫.3.用於類中的成員.表示這個成員是屬於這個類但是不屬...