2009-11-19 45 views
2

現在我已經爬上了X代碼的學習曲線約兩個月。我理解@ property/@ synthesisize指令的用途,但似乎總是在.h文件中聲明這些屬性是有點多餘的,然後將它們合成到.m文件中。@property和@synthesize:爲什麼這兩個?

爲什麼編譯器需要這兩個指令?如果他們總是一起使用,是不是技術上多餘的其中之一?

預先感謝任何關於這一問題的見解。

約翰·多納

+0

語言是「Objective-C」,IDE是「Xcode」。儘管如此, – 2009-11-19 04:43:27

回答

0

嗯,你不能使用類實現@synthesize,因此這可能是原因之一。

1

它是如此,你可以拆分的實施和申報。看起來很整齊。

3

@property (...) foo關鍵字用於類定義中。 如果您提供適當的getters/setters,則不需要在實施文件中使用@synthesize關鍵字。

例子:

@property int SomeInt; 

--- 

-(int)SomeInt { 
    return _someInt; 
} 

-(void)setSomeInt:(int)newValue { 
    _someInt = newValue; 
} 

或者您可以使用@synthesize foo通知編譯器生成getters/setters爲您或@dynamic通知編譯器,這些方法將可在運行時 - 無論是在實現文件。

實際上,有在Objective-C,read up on them at Apple Reference Library性能更加落後魔術。

+1

都不需要@dynamic或@synthesize。只要的getter/setter方法是在@implementation – 2009-11-19 05:03:57

+0

傑森Harwig:「你不需要使用@synthesize關鍵字在實現文件中,如果你提供相應的getter/setter方法 例:」 ... :) – arul 2009-11-19 05:48:26