Objective-c @property和@Synthesize

來源:互聯網
上載者:User

        在Objective-c中,使用@property來識別屬性(一般是執行個體變數)。在實現檔案中使用@synthesize標識所聲明的變數,讓系統自動產生設定方法和擷取方法。

        也就是說@property和@synthesize配對使用,讓系統自動產生設定方法和擷取方法。

        例:

Test.h

#import <Foundation/Foundation.h>@interface Test:NSObject {    int intX;    int intY;}@property int intX,intY;-(void) print;@end

Test.m

#import "Test.h"@implementation Test@synthesize intX,intY;-(void) print {   NSLog(@"intX+intY=%d",intX+intY);}@end

ClassTest.m

#import <Foundation/Foundation.h>#import "Test.h"int main( int argc, const char* argv[]) {NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];Test *test = [[Test alloc]init];[test setIntX:1];[test setIntY:1];[test print];[test release];[pool drain];return 0;}

程式運行結果:
intX+intY=2

很顯然,在Test類定義和類實現都沒有方法:setIntX和setIntY,但是我們在寫程式時卻能使用這兩個方法對類的執行個體變數進行設定值,這就是@property和@synthesize的結果。
這是@property和@synthesize最簡單的用法。

另外,在Objective-c 2.0中,增加了"."操作(點操作符),使用這個操作符可以很方便的訪問屬性(或者說可以很方便的訪問類中的成員變數,有點像C/C++的味道了 ),因些,上面的設定作業也可以寫成下面的形式:

test.intX =1;test.intY = 1;

它等價於:

[test setIntX:1];[test setIntY:1];

同時,需要特別注意:"."操作(點操作符)只能使用在setter和getter方法中,而不能用在類的其它方法上。
(在很多書上大部分都採用了點操作符進行介紹,其原理就在這裡)

@property還有很多其它的屬性。@property和synthesize是讓系統自動產生設定方法和擷取方法,那麼系統自動產生的方法是什麼樣的?有哪些規則?後繼再介紹。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.