は、クラスメソッドとして初期化です:構文の他に、インスタンス化メソッドまたはクラスメソッドとして初期化メソッドを書くことに違いはありますか?ここ
+ (instancetype)imageEditorForDocument:(ImageDocument*)imageDocument
{
ImageEditorViewController* result = nil;
result = [[ImageEditorViewController alloc] initWithNibName:@"ImageEditorViewController"
bundle:[NSBundle mainBundle]];
if (result)
{
result.imageDocument = imageDocument;
}
return result;
}
そしてここでは、インスタンスメソッドとして初期化です:
- (instancetype)initWithDocument:(ImageDocument *)imageDocument
{
self = [[ImageEditorViewController alloc] initWithNibName:@"ImageEditorViewController"
bundle:[NSBundle mainBundle]];
if(self)
{
self.imageDocument = imageDocument;
}
return self;
}
は、私の知る限り、唯一の違いは、「送信者がdoesnのことですトンクラス初期化子
を使用しているときalloc
を呼び出す必要があります。しかし、他の理由があるのでしょうか?
また、サイドの質問にはクラスメソッドであるイニシャライザの名前がありますか?手動参照カウント(MRC)でNSColor
+ (NSColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_MAC(10_9);
これはファクトリメソッドと呼ばれます。 – rmaddy