咱們直入主題,關於property方法,咱們先來了解一下相關的知識,首先是成員變量,實例變量,屬性變量。函數
咱們定義一個類來看一下atom
@interface Person :NSObject{對象
NSInteger age; //年齡變量字符串
NSString *name; //名字變量get
}it
@property(nonatomic,assign)float height; //身高變量io
@property(nonatomic,strong)NSString *skinColor; //膚色變量基礎
@end變量
@implementation Person數據類型
@end
在這個類中,在大括號內定義的變量屬於成員變量,成員變量分爲實例變量和基本數據類型變量,咱們如何去區分呢?若是說這個成員變量是類變量,即實例變量,其餘的則爲成員變量。在上面的類中,name是字符串類變量,因此是實例變量,age則爲成員變量。那麼什麼是屬性變量呢?屬性變量就是用property聲明的變量,而沒必要關注是不是類變量,皆爲屬性變量。到這裏相信你們對這幾種變量已經很熟悉了。學過Java的同窗知道,Java中有get方法和set方法,並且能夠很方便的由系統自動生成。那麼在OC中能不能由系統自動生成get和set方法呢?答案是能夠的。若是咱們有不少變量須要寫get和set方法,是一個很難操做的過程。在OC中如何實現呢?就是用咱們的property方法去生成屬性變量。注意,在OC中,只有由property生成的屬性變量才帶有set和get方法!
那麼生成一個屬性變量,property就爲咱們生成了get和set方法。(nonatomic,strong/assing),括號內的各個代碼咱們暫且先不解釋,在目前階段,咱們在寫property方法時,第一個都是nonatomic,第二個能夠是strong或assign,咱們只須要知道,若是變量是OC的類變量,那麼咱們就選擇strong,若是是基礎數據類型變量咱們就選擇assign。日後學會慢慢深刻理解。使用property定義的變量,咱們在main函數中能夠直接調用,也接觸到了咱們要闡述的另外一個知識點,點語法。咱們在主函數中實例化一個對象 Person *p = [[Person alloc]init];咱們想爲身高變量賦值,p.height = 180.0;那麼此時咱們就使用了點語法,此時咱們要注意,使用點語法就至關於調用property給咱們生成的get和set方法,若是點語法在等號左邊,如前面身高賦值,就是默認調用set
方法,若是點語法在等號右邊或直接使用點語法輸出數據,則默認調用get方法,如 float temp = p.height;NSLog(@"%f",p.height);點語法只能用於由property生成的屬性變量,其餘都不可使用。假如我在類中定義一個方法,在調用的時候則不能使用點語法調用該方法,可使用中括號調用。