InitWith方法与工厂方法

Aud*_*tor 6 methods cocoa class objective-c instance

我正在接受ObjC和Cocoa,这也是我对编程的第一次认真尝试.

我遇到了在实例上调用的initWith方法和在类上调用的工厂方法之间的差异.

首先,为什么他们称之为"工厂"方法,并且对于我所称的"InitWith"方法是否存在合适的术语?

其次,功能区别是什么?它只是内存管理的含义(工厂方法返回一个自动释放的对象)?

例如,[NSString stringWithString: (NSString*)aString]和之间的真正区别是[[NSString alloc] initWithString: (NSString*)aString]什么?

小智 5

Cocoa的对象所有权策略中描述了这些方法之间的区别.你拥有从-initWithString返回的对象:所以必须释放它,但你不拥有从+ stringWithString返回的对象,所以不需要释放它(此外,如果你想获得它的所有权,你必须保留它).

调用工厂方法,因为它们为您返回一个已经创建的对象,通常使用您提供的用于配置对象的参数,以方便程序员.