2011-08-08 28 views
1

可能重複:
Properties declared as instance variables too?是否需要在Objective-C @interface的括號內指定@property對象?

比方說,我有一個目標C類接口,如:

@interface { 
    NSString * someString; 
} 

@property (nonatomic, retain) NSString * someString; 

與@synthesizes字符串,並做了一些的@implementation其他的東西。

我想知道的是,是否有必要在括號內包含NSString * someString對象指針聲明。 (順便說一下,在變量被定義的括號之間是否有一個特定的術語?)如果我忽略NSString * someString聲明,並且@property行包含所有關於類型。所以,如果沒有必要擁有變量聲明,爲什麼該選項存在?如果變量聲明和@property聲明中的類型有衝突,會發生什麼情況?

+0

啊,是我不好,我的問題是完全相同的問題在那裏問。 – Tneuktippa

回答

1

大部分情況下,應該沒有必要,因爲@synthesize會在未預定義的情況下創建變量。此外,您還可以創建@synthesize你自己的變量,以及使用:

@synthesize aVar = _theVariableName; 

這將創建一個getter方法(aVar),一個setter方法(setAVar),並命名爲_theVariableName實例變量,你可以使用內存管理的目的。

不過,我不知道是否@dynamic會做同樣的,如果實現自己的getter和setter方法,我認爲你需要的聲明...

+2

@dynamic不會創建任何內容,它會通知編譯器實現將在運行時提供 –

+1

正如Joshua所說的那樣; '@ dynamic'純粹是說「這將在運行時存在」。在實施你自己的時候,你是否需要伊娃是一個實施細節;有時你會,有時候你不會。 – bbum

+0

您應該指出,這不適用於「傳統」運行時。 – Perception

相關問題