したがって、メソッド名内でinitを使用することは、そのメソッドがオブジェクトの新しいインスタンスの初期化を実現しない場合はお勧めできないことを理解しています。しかし、シングルトン型クラスの場合はどうでしょうか。私がこのようなことをした場合:
+ (MyClass*) sharedInstance {
__block MyClass *sharedInstance = nil;
static dispatch_once_t once_token;
dispatch_once(&once_token, ^{
sharedInstance = [[MyClass alloc] init];
});
return sharedInstance;
}
そして、別の方法があります:
- (void) initializeInstance {
// Do some stuff
// Never call the init method
}
これを行うと、余分な保持サイクルやその他の奇妙なARC動作が発生しますか?