OC語言@property @synthesize和id

 

OC語言@property @synthesize和idxcode

1、@property @synthesize關鍵字測試

注意:這兩個關鍵字是編譯器特性,讓xcode能夠自動生成getter和setter的聲明和實現。3d

(一)@property 關鍵字指針

@property 關鍵字能夠自動生成某個成員變量的setter和getter方法的聲明code

@property int age;對象

編譯時遇到這一行,則自動擴展成下面兩句:blog

- (void)setAge:(int)age;get

- (int)age;編譯器

 

(二)@synthesize關鍵字io

@synthesize關鍵字幫助生成成員變量的setter和getter方法的實現。

語法:@synthesize age=_age;

至關於下面的代碼:

- (void)setAge:(int)age

{

_age=age;

}

- (int)age

{

Return _age;

}

 

(三)關鍵字的使用和使用注意

類的聲明部分:

 

類的實現部分:

 

測試程序:

 

新版本中:

類的聲明部分:

 

類的實現部分:

 

測試程序:

 

(1)在老式的代碼中,@property只能寫在@interface  @end中,@synthesize只能寫在@implementation   @end中,自從xcode 4.4後,@property就獨攬了@property和@synthesize的功能。

(2)@property int age;這句話完成了3個功能:1)生成_age成員變量的get和set方法的聲明;2)生成_age成員變量set和get方法的實現;3)生成一個_age的成員變量。

注意:這種方式生成的成員變量是private的。

(3)能夠經過在{}中加上int _age;顯示的聲明_age爲protected的。

(4)原則:get和set方法同變量同樣,若是你本身定義了,那麼就使用你已經定義的,若是沒有定義,那麼就自動生成一個。

(5)手動實現:

1)若是手動實現了set方法,那麼編譯器就只生成get方法和成員變量;

2)若是手動實現了get方法,那麼編譯器就只生成set方法和成員變量;

3)若是set和get方法都是手動實現的,那麼編譯器將不會生成成員變量。

 

2、Id

id 是一種類型,萬能指針,可以指向\操做任何的對象。

注意:在id的定義中,已經包好了*號。Id指針只能指向os的對象。

id 類型的定義

Typedef struct objc object{

Class isa;

} *id;

侷限性:調用一個不存在的方法,編譯器會立刻報錯。

相關文章
相關標籤/搜索