iOS中property和synthesize的詳細說明
阿新 • • 發佈:2018-12-31
我們要在一個類中定義屬性,首先是要在.h檔案中(或者說是在.m檔案中的@interface的作用域中)使用關鍵字property來進行屬性的宣告,同時,在xcode的4.5版本以前,如果我們想要直接用屬性名前面加上下劃線構成的變數來進行操作的話,需要在.m檔案中寫上@synthesize student = _student(這裡就用student代表一個屬性),這樣才能編譯通過,成功使用_student這個變數來對屬性進行操作。
1、對於property,可能是再熟悉不過的了,當我們需要定義宣告一個屬性的時候就要用到它。但是,讓我們回想到一個最原始的類的建立,在objective-c中,類在預設情況下是protected的,也就是說,只有本類或者是有繼承關係的淚才能夠拿到這個類的屬性進行操作,那麼,如果其他類想要操作這些屬性就沒有辦法了。所以,如果我們需要這樣的操作,那麼就要在這個類裡面為屬性寫上setter和getter方法,來為其他類提供一個類似於介面的東西來操作本類的屬性,所以,最原始的類裡面應該是這樣寫的:@interface Student : NSObject
{
//age和gender這兩個屬性的宣告
int age;
int gender;
}
//age的getter和setter方法宣告
- (int)age;
- (void)setAge:(int)newAge;
//no的getter和setter方法宣告
- (int)gender;
- (void)setGender:(int)newGender;
@end
但是,如果試想,一個類有100個屬性,那麼我們就得寫100個getter和100個setter方法,那樣的話,類裡面的內容就會很龐大雜亂,所以,property的出現正是為了解決這個問題,相信大家也都理解到了property的作用,那就是用property宣告的屬性會自動去宣告setter方法和getter方法,不用我們去手動書寫。同時,也可以發現,使用property定義的屬性,都可以為屬性定義一些說明性的引數,比如我們常用的nonatomic,copy,assign等等。