1,先說定義html
1)成員變量定義:生存與該類的生命週期,變量存活週期跟你定義的該類實體對象同樣;做用域是整個實體對象;能夠在h文件中聲明或者在m文件中@implementation上面添加的java
#import "S1ViewController.h"ide
@interface S1ViewController ()函數
//這裏作聲明學習
@endatom
@implementation S1ViewControllerurl
@endspa
舉例:S1ViewController.h文件中定義orm
@interface S1ViewController : UIViewControllerhtm
{
NSString* sttr2; // S1ViewController實體對象的成員變量
}
@property(nonatomic,retain) NSString* sttr2; //定義點語法的快捷操做setter 與 getter方法
@end
註明:在h文件中定義的變量,在外部可見
.h聲明瞭類,至關於java的接口,在這裏interface塊外聲明的函數和屬性都是外部可見的,可是在塊內的貌似是私有的
.m裏面的全部東西都是對外封閉的 這樣就是有效的源碼的開源與閉源;
2)全局變量
定義:在@implementation外定義的變量(在@implementation中定義也是能夠可是通常不這麼幹)
舉例:
//規範的
static int hu=3;//全局變量
NSString*sttr1=@"S1ViewController";//全局變量
@implementation S1ViewController
@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";//全局變量
在其餘文件若是要用該全局變量,在前面加extern NSString*sttr1;便可使用了