Sınıf yöntemi olarak başlatma geçerli:Sözdiziminin yanı sıra, bir başlatma yöntemi yazmak için örnek veya sınıf yöntemi olarak bir fark var mıdır? İşte
+ (instancetype)imageEditorForDocument:(ImageDocument*)imageDocument
{
ImageEditorViewController* result = nil;
result = [[ImageEditorViewController alloc] initWithNibName:@"ImageEditorViewController"
bundle:[NSBundle mainBundle]];
if (result)
{
result.imageDocument = imageDocument;
}
return result;
}
Ve burada örnek yöntemi olarak bir başlatma geçerli:
- (instancetype)initWithDocument:(ImageDocument *)imageDocument
{
self = [[ImageEditorViewController alloc] initWithNibName:@"ImageEditorViewController"
bundle:[NSBundle mainBundle]];
if(self)
{
self.imageDocument = imageDocument;
}
return self;
}
Bildiğim kadarıyla söyleyebilirim
, tek fark gönderen kokan olmasıdır
Bir sınıf başlatıcısı kullanıldığında alloc
numaralı telefonu aramam gerekiyor. Ama başka bir neden var mı?
Ayrıca, bir yan soru bir sınıf yöntemi olan bir başlatıcı için bir ad var mı? manüel referans sayımı (MRC) ile NSColor
+ (NSColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_MAC(10_9);
Fabrika yöntemidir. – rmaddy