gpt4 book ai didi

objective-c - 在 Objective-C 中使用 instancetype 作为副本的返回类型?

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

使用instancetype 作为init 和相关方法的返回值是推荐的处理方式,参见最新clang features .但是,w.r.t. 的最佳实践是什么? NSCopying 协议(protocol)中 copyWithZone: 的返回值(参见 this thread 了解以前的最佳实践)?在 clang 文章中从方法的命名方案推断类的规则中没有提到它,但我不明白为什么它应该与 alloc 方法的返回值不同。

类型推断是否不适用于 copy 方法?我们是否仍应返回 instancetype 或我们实际返回的特定类类型?

最佳答案

您不应使用 instancetype。这里明显的情况是存在不可变/可变的区别——NSMutableStringcopy 返回一个 NSString,您应该将其视为不可变的.在这种情况下,API 不会返回与接收方相同类型的实例。

另一个原因是您应该匹配声明的签名,正如 Josh Caswell 指出的那样 (+1)。

当然,没有什么能阻止您使用您想要的语义和签名来声明您自己的协议(protocol)。

关于objective-c - 在 Objective-C 中使用 instancetype 作为副本的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19304619/

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