601得票8回答
如何在“纯”Swift中创建一个弱协议引用(不使用@objc)

weak引用在Swift中似乎无法正常工作,除非声明一个@objc的protocol,但在纯Swift应用程序中我不想这样做。这段代码会产生编译错误(weak不能应用于非类类型MyClassDelegate):class MyClass { weak var delegate: MyCla...

430得票19回答
如何在Swift协议中声明可选方法?

在Swift中是否有可能实现?如果不能,是否有解决方法可以实现?

158得票6回答
协议只能作为通用约束使用,因为它具有Self或关联类型要求。

我有一个名为RequestType的协议,它有一个关联类型Model如下:public protocol RequestType: class { associatedtype Model var path: String { get set } } public ext...

153得票3回答
协议不符合自身?

为什么这段 Swift 代码无法编译? protocol P { } struct S: P { } let arr:[P] = [ S() ] extension Array where Element : P { func test<T>() -> [T] ...

146得票8回答
在Swift中,协议可用作数组类型和函数参数的使用方法

我想创建一个类,可以存储符合特定协议的对象。这些对象应该存储在类型化数组中。根据Swift文档,协议可以用作类型: 因为它是一种类型,所以您可以在许多允许其他类型的地方使用协议,包括: 作为函数、方法或初始化器中的参数类型或返回类型 作为常量、变量或属性的类型 作为数组、字典或其他容器中的...

134得票2回答
“Protocol ... can only be used as a generic constraint because it has Self or associated type requirements” 的意思是什么?

我正在尝试创建一个基于Swift中自定义协议(实际上是HashSet)的字典,但它给出了标题中的错误: 因为它有Self或相关类型要求,所以协议'myProtocol'只能用作泛型约束条件 但我无法理解这句话。protocol Observing: Hashable { } va...

127得票3回答
非 '@objc' 方法不满足 '@objc' 协议的可选要求。

概览: 我有一个协议P1,它提供了Objective-C可选函数的默认实现。 当我提供可选函数的默认实现时,会出现警告。 编译器警告:Non-'@objc' method 'presentationController(_:viewControllerForAdaptivePresen...

116得票8回答
Swift - 必须被子类重写的类方法

在Swift中,是否有一种标准的方法来创建“纯虚函数”,即每个子类必须重写并且如果没有重写则会导致编译时错误的函数?

105得票5回答
在Swift中,我如何声明一个特定类型的变量,该变量符合一个或多个协议?

在Swift中,我可以通过以下方式声明变量来明确设置变量的类型: var object: TYPE_NAME 如果我们想更进一步地声明一个符合多个协议的变量,我们可以使用 protocol 声明: var object: protocol<ProtocolOne,Protocol...

104得票15回答
如何在Swift中使枚举符合协议?

Swift文档指出,类、结构体和枚举都可以遵循协议,并且我可以使它们都符合要求。但是我无法让枚举的行为与类和结构体的示例完全相同:protocol ExampleProtocol { var simpleDescription: String { get set } mutat...