在Swift中这不存在所以我想知道对于这样的事情是什么是正确的方法:
I want to have a variable (internal behavior) and and a public method using this variable on a base class. This variable will be used also on inherited clases.
我看到的选项
>忘记基类,并在我需要的任何地方实现变量和方法.错误,重复的代码
>按组合实现继承.我将创建一个包含常用方法的类,这将由组合而不是继承使用.错误但仍然重复可以通过继承避免的代码
>实现继承并在基类上创建变量internal.错误,因为暴露事情没有任何理由,除了允许继承的clases的可见性.
基类的实现细节
您的特定情况令人困惑,因为NSOperationQueue已经有一个公共方法来取消排队操作(cancelAllOperations).如果要保护队列免受外部访问(例如,阻止调用者直接使用addOperation),则应将队列放在另一种类型(即组合)中,并将所需内容转发到队列.关于您正在解决的具体问题的更多细节将允许我们帮助建议其他类似Swift的解决方案.
如果最终你需要一些看似受保护或朋友的东西,那么正确的解决方案就是私有的.将您的子类或您的朋友放在与目标相同的文件中,并将私有内容标记为私有.或者,将需要协同工作的东西放在框架中,并将属性标记为内部. Swift Blog提供了一个很好的解释,为什么这是一个有意的选择.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。