gpt4 book ai didi

ios - 为什么 alloc 和 init 在创建新对象时可能返回不同的对象?

转载 作者:行者123 更新时间:2023-11-28 21:54:07 25 4
gpt4 key购买 nike

正如ios文档所说,我们应该创建一个新的对象如下

NSObject *newObject = [[NSObject alloc] init];

永远不要创建这样的对象

NSObject *someObject = [NSObject alloc];
[someObject init];

它说 init 可能会返回与 alloc 不同的对象,所以我很困惑为什么或在什么情况下它们会返回不同的对象?谢谢!

最佳答案

这种行为是允许的,这样你的类就可以为正在创建的对象生成一个替代对象。您可能出于以下几个原因想要这样做:

  • 对象缓存 - 如果您需要经常创建和释放相同的对象,例如,当您为数值创建包装对象时,您可以存储对象实例以供重用,并在请求时返回它们.如果使对象不可变,则可以通过共享对象来节省大量内存。
  • 返回子类 - 这样做有多种设计原因,例如,实现与返回对象的接口(interface)兼容的隐藏功能,例如写时复制。
  • 返回 nil - 您可以这样做以指示您的 init 函数失败。

关于ios - 为什么 alloc 和 init 在创建新对象时可能返回不同的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27229799/

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