xcode中用靜態成員函數來代替全局變量


objective c支持全局變量,用法和c/c++中相同。但是當我們要求如下時:如在A類里面定義的變量,在B類中不需要創建A類的實例就可訪問和修改。
   用全局變量來實現並不合適。此時我們需要做的是在A類的implementation文件中定義一 個static變量,然后為A類定義靜態成員函數(class method)來操作該變量。這樣在其它類中你就不需要創建A類的實例來對static變量進行訪問。雖然該static變量並不是A類的靜態成員變量, 但是也算達到了同樣的效果。為什么不定義全局變量,關鍵就在於變量的作用域,static變量的作用域被限制在單一的文件中。代碼可以如下所示:  
//example.h
@interface Example : NSObject {
}
- (id)init;
+(int)instanceCount;
@end
復制代碼
//example.m
#import "example.h"
static int count;
@implementation Example
-(id)init{
    self = [super init];
    if(nil!=self){
        count+=1;
    }
    return self;
}
+(int)instanceCount{
    return count;
}
@end
復制代碼
上面的例子中你就可以通過[Example instanceCount]對靜態變量count進行訪問,無須創建實例。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM