在swift中思考C#protected accessor的正确方法是什么?
在c#中,我们有受保护的访问器,它允许类成员在继承的clases上可见,但对其余的则不可见.
在Swift中这不存在所以我想知道对于这样的事情是什么是正确的方法:
我看到的选项 >忘记基类,并在我需要的任何地方实现变量和方法.错误,重复的代码 基类的实现细节 我想要一个NSOperationQueue实例和一个公共方法来取消排队操作.我从继承的类向此队列添加新操作.
在Swift中,正确的答案几乎总是协议和扩展.它几乎从不继承.有时Cocoa会阻碍我们,因为Cocoa中的类比协议更常见,但目标几乎总是协议和扩展.子类化是我们的最后选择.
您的特定情况令人困惑,因为NSOperationQueue已经有一个公共方法来取消排队操作(cancelAllOperations).如果要保护队列免受外部访问(例如,阻止调用者直接使用addOperation),则应将队列放在另一种类型(即组合)中,并将所需内容转发到队列.关于您正在解决的具体问题的更多细节将允许我们帮助建议其他类似Swift的解决方案. 如果最终你需要一些看似受保护或朋友的东西,那么正确的解决方案就是私有的.将您的子类或您的朋友放在与目标相同的文件中,并将私有内容标记为私有.或者,将需要协同工作的东西放在框架中,并将属性标记为内部. Swift Blog提供了一个很好的解释,为什么这是一个有意的选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |