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

objective-c – InitWith方法与工厂方法,第1张

概述我正在接受ObjC和 Cocoa,这也是我对编程的第一次认真尝试. 我遇到了在实例上调用的initWith方法和在类上调用的工厂方法之间的差异. 首先,为什么他们称之为“工厂”方法,并且对于我所称的“InitWith”方法是否存在合适的术语? 其次,功能区别是什么?它只是内存管理的含义(工厂方法返回一个自动释放的对象)? 例如,[NSString stringWithString:(NSStrin 我正在接受ObjC和 Cocoa,这也是我对编程的第一次认真尝试.

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

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

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

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

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

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

总结

以上是内存溢出为你收集整理的objective-c – InitWith方法与工厂方法全部内容,希望文章能够帮你解决objective-c – InitWith方法与工厂方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1017316.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存