對於Objective-C的,在下面的頭文件:在Objective-C中,爲什麼變量的類型必須爲@property重複?
@interface Peg : NSObject {
char color;
}
@property char color;
不知成員變量已經被說成是一個字符類型,那麼爲何@property
有重複嗎? (否則它不會編譯)。編譯器不能說明它是char?它不可能是別的,可以嗎?
對於Objective-C的,在下面的頭文件:在Objective-C中,爲什麼變量的類型必須爲@property重複?
@interface Peg : NSObject {
char color;
}
@property char color;
不知成員變量已經被說成是一個字符類型,那麼爲何@property
有重複嗎? (否則它不會編譯)。編譯器不能說明它是char?它不可能是別的,可以嗎?
這是因爲一般屬性不必與您的類的任何已聲明的實例變量相關。您可能擁有一個屬性,並且不在您的課程標題中包含變量。這就是爲什麼你必須聲明它的類型。
使用屬性而不是變量使您的標題變得乾淨,隱藏了實現。
所以,你可以聲明一個屬性,然後@synthesize
它
@interface Peg : NSObject
@property char color;
@implementation Peg
@synthesize color;
@end
只需使用以下
@interface Peg : NSObject {}
@property char color;
事實上,它不再是需要的,鏗鏘的x64至少在編譯時。如果您省略實例變量,則@synthesize
將爲您創建一個實例變量。
這是否意味着一般情況下它更簡潔,省略實例變量?離開或不離開,仍然有一個「顏色」屬性使用? – 2012-04-14 09:10:43
是的,把它扔掉 – 2012-04-14 09:11:47
你也可以省略大括號。 '@interface Peg:NSObject @property char color;'等等。 – 2012-04-14 17:54:51