在Objective-C(以及可可/ Cocoa Touch)中,對象有許多初始化程序似乎很常見。在其他語言中,我已經習慣了有一個地方,我可以覆蓋到影響對象初始化,但我看不出有什麼辦法避免類似下面的代碼:Objective-C公共對象初始化
- (void)commonInit
{
// Do stuff
}
- (id)init
{
self = [super init];
if (self) [self commonInit];
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) [self commonInit];
return self;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) [self commonInit];
return self;
}
(在這種情況下執行一些常規任務initilisation在UIView
子類)。
有沒有更好的方法?希望有:被迫輸出每種方法是非常乏味的。
不是;對我來說看起來不錯,除了我會製作'commonInit' * private *並使用一個前導下劃線來證明這一點。 – trojanfoe
看起來不錯,但你也可以使用[The Designated Initializer](https://developer.apple.com/library/ios/documentation/general/conceptual/devpedia-cocoacore/MultipleInitializers.html) –