@property中的變數與_

im5437發表於2015-05-18
Objective-C語言關鍵詞,與@synthesize配對使用。xcode4.5以及以後的版本,@synthesize可以省略
下面以 Person 類為例:
在. h 檔案中:
@interface Person : NSObject
{
NSString * _name;
NSString * _sex;
NSInteger _age;
}
@property NSString * name;
@property NSString * sex;
@property NSInteger age;
表示宣告瞭三個屬性: name,sex,age, 預設生成3個對應的 setter 和 getter 方法
在. m 檔案中:
@implementation Person
@synthesize name = _name;
@synthesize sex = _sex;
@synthesize age = _age;
@end
表示實現3個 setter 和 getter 方法,其中 name = _name 表示說在 getter 和 setter 方法中操作的例項變數是_name,如果省略了_name,_age,_sex, 那麼會在. h 檔案中生成同名的例項變數 name,sex,age(注意:這裡並沒有下劃線),此時生成的 setter 和 getter 方法所操作的例項變數是 name,sex,age, 所以_name,_sex,_age 並沒有被操作.
在 ios5.0後,@synthesize也可以省略不寫,此時在. h 檔案中只寫@ property 即可,編譯器會自動生成相應的例項變數,例項變數的名字是屬性名稱前加下劃線.

相關文章