目标c – 在目标C中有私人成员的不同方法的比较

目标c – 在目标C中有私人成员的不同方法的比较,第1张

概述我来自C / Java世界,很明显如何创建私人会员.然而,我在目标C中看到了几种方法来做到这一点,而且我想听听这个问题 1)在.h文件中声明为@private @interface MyClass : NSObject{ @private int someMember; }@end 2)在.m文件的界面中声明它们 @interface MyClass() { int 我来自C / Java世界,很明显如何创建私人会员.然而,我在目标C中看到了几种方法来做到这一点,而且我想听听这个问题

1)在.h文件中声明为@private

@interface MyClass : NSObject{    @private    int someMember;  }@end

2)在.m文件的界面中声明它们

@interface MyClass() {    int someMember;  }@end@implementation MyClass@end

3)在实施中声明它们

@implementation MyClass {     int someMember;  }@end

什么是首选方法,为什么?我想念任何其他方法吗?

解决方法 我的偏好是#3:
// MyClass.m...@implementation MyClass {     int someMember;}@end

它允许您干净地抽象和最小化依赖关系.

由于每个objc对象都是动态分配的,并且几乎没有物理依赖关系,所以您可以拥有最快的构建时间和最丰富的对象表示最小的编译开销(例如,最小的#imports和物理依赖).

抽象也是一个巨大的加法 – 私有是默认的,你不应该偏离这个原因,也没有什么理由将内部公开给别人.这一切都非常好地保护,同时确保类型安全性不受影响. Big plus:您也可以轻松地在对象中声明C值,而不会让每个人都暴露于所有C库的依赖关系,而不是PIMPL,而不是全局范围内的结构,而不是一个* voID **,而是一个适当的值.这是一个很好的编译防火墙.如果您曾在大型C或C项目上工作,您可能会高兴.

当然,宣布选项#2所示的ivars会带来所有这一切.所以这在很大程度上取决于你在哪里以及如何看待变量.一个ivar声明是具体的,而一个属性可能是抽象的 – 所以我喜欢将具体的混合和界面与接口进​​行分组; #2或#3是理想的,除非您需要向后兼容性.

如果你想要(伪)私有属性,我建议你在类继承中声明它们:

// MyClass.m...@interface MONClass ()@property (nonatomic,copy) Nsstring * string;@end
总结

以上是内存溢出为你收集整理的目标c – 在目标C中有私人成员的不同方法的比较全部内容,希望文章能够帮你解决目标c – 在目标C中有私人成员的不同方法的比较所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/langs/1233631.html

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

发表评论

登录后才能评论

评论列表(0条)

保存