gpt4 book ai didi

objective-c - InitWith 方法与工厂方法

转载 作者:太空狗 更新时间:2023-10-30 03:44:24 27 4
gpt4 key购买 nike

我正在学习 ObjC 和 Cocoa,这也是我第一次认真尝试一般编程。

我无法区分在实例上调用的 initWith 方法和在类上调用的工厂方法。

首先,为什么将它们称为“工厂”方法,我称为“InitWith”方法的方法是否有合适的术语?

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

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

最佳答案

Cocoa 的 object ownership policy 中描述了这些方法之间的区别。 .您拥有从 -initWithString: 返回的对象,因此必须释放它,但您不拥有从 +stringWithString 返回的对象,因此不需要释放它(此外,如果您确实想获得它的所有权,则必须保留它)。

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

关于objective-c - InitWith 方法与工厂方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3273857/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com