在swift中隐藏采用协议

在swift中隐藏采用协议,第1张

概述我想知道我是否可以在swift中隐藏采用协议。 在Objective-C中,我将使用m.-file中的私有头来隐藏我不想暴露给外部的协议。 这样的事情是否可以迅速?在协议之前放置“私有”不起作用,显然是:) 编辑:找到一个简单的方法来隐藏它。至少从xcode快速帮助信息:只是把通过和实现在你的类的扩展,它不会显示在那里。 原始答案: 我想出了这个例子,灵感来自Java中的内部类。这里MyVC不会公 我想知道我是否可以在swift中隐藏采用协议。

在Objective-C中,我将使用m.-file中的私有头来隐藏我不想暴露给外部的协议。
这样的事情是否可以迅速?在协议之前放置“私有”不起作用,显然是:)

编辑:找到一个简单的方法来隐藏它。至少从xcode快速帮助信息:只是把通过和实现在你的类的扩展,它不会显示在那里。

原始答案:

我想出了这个例子,灵感来自Java中的内部类。这里MyVC不会公开它实现UICollectionVIEwDelegate用于内部目的,而委托实现可以访问MyVC的私有变量。

public class MyVC: UIVIEwController {    private let a = 4 as Int    private var hIDdenDelegate: HIDdenDelegateImpl?    public overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        hIDdenDelegate = HIDdenDelegateImpl(outer: self)        innerCollectionVIEw.delegate = hIDdenDelegate    }}private class HIDdenDelegateImpl: NSObject,UICollectionVIEwDelegate {    private weak var outer: MyVC?    init(outer: MyVC) {        self.outer = outer        super.init()    }    private func doStuff() -> Int {        // can access private variables of outer class        return outer?.a    }    // implement delegate methods here}

请注意,HIDdenDelegateImpl也可以是MyVC的内部类,我选择将其放在外面,以便可读性。

与内部类的Java实例相反,需要外部类的实例存在。由于Swift不是这样,我们需要有外部的解决方法。

还有this nice example专注于委托执行。

编辑:使外部类中的一个实例变量委托给它,以保留外部类的引用,以避免保留循环。

总结

以上是内存溢出为你收集整理的在swift中隐藏采用协议全部内容,希望文章能够帮你解决在swift中隐藏采用协议所遇到的程序开发问题。

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

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

原文地址:https://54852.com/web/1055373.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存