【问题标题】:iOS - Objective-c protocol in swift with private accessiOS - 具有私有访问权限的 Swift 中的 Objective-c 协议
【发布时间】:2021-02-19 11:39:38
【问题描述】:

我在我的 swift 项目中导入了一些 Objective-c 代码,其中包含一些协议。当我在 swift 中使用该objective-c 协议时,会抛出如下所示,

方法 'xxxxfunc' 必须声明为 public,因为它匹配一个 公共协议“xxxxDelegate”中的要求

它迫使我将其设为公共功能,但我需要将其设为私有。如何将这些功能设为私有访问?

【问题讨论】:

  • 如果协议是公开的,并且类型符合公开的协议,那么方法必须是公开的,因为知道协议的人都知道方法。

标签: ios objective-c swift swift-protocols


【解决方案1】:

这与 Obj-C - Swift 互操作性无关。即使协议本身是纯 Swift 也是如此。

不能将协议一致性设为私有,因为这将启用对具有不同实现的同一协议的多个一致性。协议一致性(以及所有协议要求)的可见性必须与协议的可见性相同。

因此,如果您有public protocol,则协议所需的所有属性/方法也必须在符合类型上声明public。如果您的协议是internal,那么您可以将属性/方法设置为internal

最接近你想要的行为是在同一个文件中声明协议和符合类型,使协议private,然后你只需要标记符合类型的属性/方法fileprivate

但是,您应该重新考虑您的架构。协议真的是满足您需求的最佳数据结构吗?这些属性/方法真的需要在符合类型的情况下是私有的吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2013-10-27
    • 2019-12-27
    • 1970-01-01
    • 2017-10-08
    相关资源
    最近更新 更多