92得票4回答
致命错误:无法从Objective-C桥接数组 - 为什么你还要尝试,Swift?

我已经声明了一个Swift协议:protocol Option { var name: String { get } } 我声明了这个协议的多个实现——一些是类,一些是枚举。我有一个视图控制器,其属性声明如下:var options: [Option] = [] 当我尝试在另一个视图控...

90得票9回答
协议函数返回Self

我有一个名为P的协议,它返回对象的副本:protocol P { func copy() -> Self } 并且有一个实现P接口的类C:class C : P { func copy() -> Self { return C() } } 然...

89得票4回答
为什么在Swift协议中不能使用let?

我对Swift协议中使用var和{ get set }关键字存在疑惑。根据苹果文档:如果一个协议要求属性同时具有可读性和可写性,那么该属性要求不能由常量存储属性或只读计算属性实现。如果协议仅要求属性具有可读性,则可以使用任何类型的属性来满足需求,如果这对自己的代码有用,则属性也可以是可写的。属...

84得票2回答
我可以在协议中使用 init 函数吗?

当我尝试这样实现我的协议:protocol Serialization { func init(key keyValue: String, jsonValue: String) } 我收到一个错误提示:在函数声明中期望标识符。 我为什么会收到这个错误?

63得票5回答
Swift中的泛型数组

我一直在尝试使用不同类型的通用类数组。通过以下示例代码最易于解释我的问题: // Obviously a very pointless protocol... protocol MyProtocol { var value: Self { get } } extension Int...

48得票5回答
何时在Swift中使用`protocol`和`protocol: class`?

我已经设置了一个协议,用于将一些信息发送回上一个视图控制器。 我定义它如下:protocol FilterViewControllerDelegate: class { func didSearch(Parameters:[String: String]?) } 但是使用时有什么区别...

47得票1回答
Swift 2使用协议扩展中的可变函数出错:“无法在不可变值上使用可变成员:'self'是不可变的”。

我不确定这里发生了什么事情,这似乎应该非常简单明了。我有一个含有可变变量的协议,并且有一个带有mutating函数的扩展程序。当我尝试在testClass.testFunc中使用扩展程序中声明的mtkAnimQueAppend时,会出现以下错误:"Cannot use mutating mem...

47得票3回答
协议扩展中的 'where self' 是什么?

我看到很多以下格式的例子: extension Protocolname where Self: UIViewController where Self 在协议扩展中是什么?我找不到相关文档。

46得票3回答
为什么协议中的只读属性需求不能由符合该属性的属性满足?

为什么以下代码会产生错误?protocol ProtocolA { var someProperty: ProtocolB { get } } protocol ProtocolB {} class ConformsToB: ProtocolB {} class SomeClass...

39得票8回答
如何以通用的方式调用协议中的静态函数?

在协议上声明静态函数有没有意义?使用该协议的客户端仍然必须在符合该协议的类型上调用函数,对吗?这破坏了不需要知道符合协议的类型的想法。有没有一种方式可以调用协议上的静态函数,而不需要知道实际符合协议的类型?