[英]Common Initializer for Objective-C Class
我已经在Objective-C编程多年了,我总是碰到这个问题:如果您的对象具有多个初始化程序,但是所有代码都有共同的代码,那么如何提取它呢?
我能想到的最好的是这样的:
@implementation Example
- (void)privateInitWithString:(NSString*)aString
{
self.str = aString;
}
- (id)init
{
self = [super initWithWindowNibName:@"MyNib"]
if(self) {
[self privateInitWithString:@""];
}
return self;
}
- (id)initWithString:(NSString*)aString
{
self = [super initWithWindowNibName:@"MyNib"]
if(self) {
[self privateInitWithString:aString];
}
return self;
}
@end
在各个初始化器中,有很多重复代码会闻到。 但是,我无法想到一种方法来使一个初始化程序“陷入”另一种初始化方法,因为不能保证在调用[super init]
之前已经设置了self
是否有我遗漏的最佳实践?
您编写一个 “指定的初始化程序”。 该初始化程序处理所有不同的情况。 在您的情况下,initWithString似乎是一个不错的选择。 初始化就变成
- (instancetype)init { return [self initWithString:@""]; }
你可以在这里读更多关于它的内容:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.