Objective-C基礎5 : 屬性@property

來源:互聯網
上載者:User

標籤:

1.類裡面經常有一些變數需要進行set和get操作,OC中提供了方便的屬性@property來替換set和get方法,這樣能減少頻繁且簡單的重複代碼。如下代碼:

@interface Person : NSObject@property NSString* strName;@property int nAge;@end
@implementation Person@synthesize strName;@synthesize nAge;@end

 

通過在類聲明變數前面添加@property表明這個變數是個屬性變數@property NSString* strName,在類實現裡面添加@synthesize讓XCode為你產生編譯代碼@synthesize strName。實際上xcode編譯器會在編譯的時候自動為這個屬性添加set和get方法,如上面例子中的StrName在類裡面添加了方法setStrName和strName,我們可以通過方法設定和訪問strName。但是方便的方法是通過.來訪問。

 @autoreleasepool {        // insert code here...        Person* p = [[Person alloc] init];        p.strName = @"52xpz";        p.nAge = 16;        NSLog(@"name:%@, age:%d", p.strName, p.nAge);        NSLog(@"name:%@, age:%d", [p strName], [p nAge]);        [p setStrName:@"akon"];        [p setNAge:18];        NSLog(@"name:%@, age:%d", p.strName, p.nAge);        NSLog(@"name:%@, age:%d", [p strName], [p nAge]);            }

[email protected]有一些可選項,比如copy(複製),retain(保留)、readonly(唯讀)、readwrite(可讀寫)、nonatomic(不要原子話訪問)、assign(簡單地賦值)。

屬性預設是assgin和nonatomic選項。下面代碼聲明了strName為copy, readwrite;eye為retain, readwrite, nonatomic。方便啊!

@interface Person : NSObject@property (copy, readwrite) NSString* strName;@property int nAge;@property (retain, readwrite, nonatomic) Eye* eye;
@end

 如何不讓編譯器為我們產生屬性代碼而是用自己的代碼呢?答案@dynamic關鍵字。

@interface Person : NSObject@property (readonly) int nAge;@end@implementation Person@dynamic nAge;-(int) nAge{    return  10;}@end

 3.關於屬性的選擇個人認為有一下幾個原則:

    1)set和get只要一個參數設定變數用屬性,有兩個及以上參數設定變數不應該用。

    2)代碼都是簡單地設定和擷取變數應該用屬性,減少代碼量的同時代碼簡單、可讀性好。

Objective-C基礎5 : 屬性@property

相關文章

聯繫我們

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