似乎每当我们需要初始化一个对象时,我们都需要立即编写
-(id) init {
self = [super init];
if (self) {
// initialize values here
}
return self;
}
有更短的方法吗?甚至可以通过宏?
似乎每当我们需要初始化一个对象时,我们都需要立即编写
-(id) init {
self = [super init];
if (self) {
// initialize values here
}
return self;
}
有更短的方法吗?甚至可以通过宏?
您可以少写一行,但不再建议这样做:
- (id) init {
if((self = [super init])){
// initialize ivars
}
return self;
}
样板是样板,不幸的是,初始化器所做的每一件事:分配(或超类的指定初始化器)self
的结果,检查is not ,初始化 ivars 和返回(无论是有效对象)都是必要的。[super init]
self
nil
self
nil
为了节省自己的打字时间,您可以在 Xcode 中制作代码片段。
不,您必须在指定的初始化程序中执行所有这些操作,因此没有简单的捷径。
从理论上讲,您可以走宏路线,但宏不会很漂亮,而且对您的代码的读者来说是违反直觉的。
#define BEGIN_INIT self=[super init];if(self){
#define END_INIT }return self
-(id) init {
BEGIN_INIT;
// initialize values here
END_INIT;
}
这段代码并没有短多少,其他人也不太熟悉。我强烈推荐反对它。