這裏是初始化爲一個類的方法:除了語法之外,將初始化方法編寫爲實例還是類方法還有什麼區別嗎?
+ (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;
}
據我所知道的,唯一的區別是發送者沒有按」當使用類初始化程序時,需要調用alloc
但是有沒有其他原因?
此外,一個側面的問題是否有一個名稱爲初始化是一個類方法? 像NSColor
+ (NSColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_MAC(10_9);
它被稱爲工廠方法。 – rmaddy