IOS 成員變量,全局變量,局部變量定義,static與extern的區別


IOS 成員變量,全局變量,局部變量定義,static與extern的區別

1,先說定義

1)成員變量定義:生存與該類的生命周期,變量存活周期跟你定義的該類實體對象一樣;作用域是整個實體對象;可以在h文件中聲明或者在m文件中@implementation上面添加的

#import “S1ViewController.h”

@interface S1ViewController ()

//這里做聲明

@end

@implementation S1ViewController

@end

舉例:S1ViewController.h文件中定義

@interface S1ViewController : UIViewController

{

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;即可使用了


免責聲明!

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



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