我[[self alloc] init]
在编写工厂方法时无法理解其用法。我知道工厂方法是创建类实例的便捷方法,它们为您执行alloc
、init
和autorelease
。我可以看到它是如何形成的,例如在NSArray
使用工厂方法arrayWithArray:
或array
等声明属性时调用它来设置它。我显然可以看出这与直接(显式)调用alloc
and有何不同init
。
我的问题是我不了解更深层次的工厂方法。我在网上看到了一个解释,它说可以使用类工厂方法来基本上封装这样的东西,而不是显式调用alloc
和调用:init
+(instancetype)createWithString:(NSString *)string
{
return [[self alloc] initWithString:string];
}
但是如何有效instancetype
地[self alloc]
允许子类使用类工厂方法呢?