加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用实例类型作为Objective-C中的副本的返回类型?

发布时间:2020-12-16 03:22:22 所属栏目:百科 来源:网络整理
导读:使用instancetype作为init和相关方法的返回值是推荐的方法继续,请参阅最新的 clang features.但是,最好的做法是什么w.r.t. copyWithZone的返回值:在NSCopying协议(参见 this thread以前的最佳做法)?在clang文章中从方法的命名方案推断类的规则中没有提到,
使用instancetype作为init和相关方法的返回值是推荐的方法继续,请参阅最新的 clang features.但是,最好的做法是什么w.r.t. copyWithZone的返回值:在NSCopying协议(参见 this thread以前的最佳做法)?在clang文章中从方法的命名方案推断类的规则中没有提到,但是我不明白为什么它应该与alloc方法的返回值不同.

类型推断不适用于复制方法吗?我们还应该返回实际类型,还是返回实际返回的特定类类型?

解决方法

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

另一个原因是你应该符合声明的签名,就像Josh Caswell指出的那样(1).

当然,没有什么是阻止你用你想要的语义和签名声明你自己的协议.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读