オブジェクトを初期化する必要があるときはいつでも、すぐに書き込む必要があるようです
-(id) init {
self = [super init];
if (self) {
// initialize values here
}
return self;
}
それを行うより短い方法はありますか?たぶんマクロでも?
オブジェクトを初期化する必要があるときはいつでも、すぐに書き込む必要があるようです
-(id) init {
self = [super init];
if (self) {
// initialize values here
}
return self;
}
それを行うより短い方法はありますか?たぶんマクロでも?
1 行少なくすることもできますが、これは推奨される方法ではなくなりました。
- (id) init {
if((self = [super init])){
// initialize ivars
}
return self;
}
残念ながらボイラープレートはボイラープレートであり、イニシャライザーが行うことのそれぞれ: (またはスーパークラスの指定されたイニシャライザー) のself
結果への代入、 is notのチェック、ivar の初期化、および戻り(または有効なオブジェクトかどうか) はすべて必要です。[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;
}
このコードはそれほど短くはなく、他の人にはあまりなじみがありません。もう一度強くお勧めします。