@property @synthesize的含義以及誤區。

來源:互聯網
上載者:User

@property的作用是定義屬性,聲明getter,setter方法。(注意:屬性不是變數)
@synthesize的作用是實現屬性的,如getter,setter方法.

在聲明屬性的情況下如果重寫setter,getter,方法,就需要把未識別的變數在@synthesize中定義,把屬性的存取方法作用於變數。如:

.h檔案中

@property (nonatomic,assign)NSInteger age;@property (nonatomic,retain)NSString * name;@property (nonatomic,copy)NSString * bb;

.m檔案中

//如果不加以下三行,就報會找不到_age,_name,_bb變數的錯誤@synthesize age = _age;@synthesize name = _name;@synthesize bb =_bb;- (void)setName:(NSString *)name{    if (_name!=name) {        [_name release];        _name = [name retain];    }}- (NSString *)name{    return [[_name retain] autorelease];}- (void)setAge:(NSInteger)age{    _age = age;}- (NSInteger)age{    return _age;}- (void)setBb:(NSString *)bb{    if (_bb!=bb) {        [_bb release];        _bb = [bb copy];    }}- (NSString *)bb{    return [[_bb retain]autorelease];}

 

總結:一定要分清屬性和變數的區別,不能混淆。@synthesize 聲明的屬性=變數。意思是,將屬性的setter,getter方法,作用於這個變數。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.