有兩種選擇的目標C /可可構造函數:爲什麼要使用類方法構造函數與alloc/init?
1類構造函數
Product *product = [Product productWithIdentifier:@"Chocolate"];
// Use product
2.分配/ init已構造
Product *product = [[Product alloc] initWithIdentifier:@"Chocolate"];
// Use product
[product release];
我做什麼
- 我傾向於使用類方法,只是因爲它看起來更乾淨,而且不需要發佈。
- 我看到很多alloc/init - 這樣做有什麼好處?
我的問題
- 哪一個最好?或者這只是一個品味問題?
代碼
對於背景下,該類產品將有以下:
+(Product *)productWithIdentifier:(NSString *)identifier_ {
return [[[[self class] alloc] initWithIdentifier:identifier] autorelease];
}
-(Product *)initWithIndentifier:(NSString *)identifier_ {
self = [super init]
if (self) {
identifier = identifier_;
}
return self;
}
這兩個答案之間的距離非常近,但這稍微好一些,因爲它提到了內存佔用問題。但是,另一個答案再次提到「串聯」呼叫。我希望我可以選擇兩個! – 2012-02-19 18:10:50
我已經upvoted塞爾吉奧的答案几乎彌補這一點;-) – DarkDust 2012-02-19 18:20:04