35得票1回答
Swift中的hash和hashValue之间的区别

在 Swift 中,Hashable 协议要求您实现一个名为 hashValue 的属性:protocol Hashable : Equatable { /// Returns the hash value. The hash value is not guaranteed to b...

13得票2回答
自身类型、协议扩展和非final类。

我尝试编写一个静态方法,用于从nib中实例化该类的视图。该方法应该是通用的,并适用于每个UIView子类。同时我想保存类型信息——所以,例如,在这段代码中: ```swift let myView: MyCustomView = UIView.fromNib() ``` MyCustom...

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

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

26得票2回答
泛型和协议类型函数参数在实践中有什么区别?

给定一个没有任何关联类型的协议: protocol SomeProtocol { var someProperty: Int { get } } 这两个函数实际上有什么区别(不是“一个通用,一个不通用”)?它们是否生成不同的代码,是否具有不同的运行时特征?当协议或函数变得复杂时,...

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

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

11得票2回答
为什么即使有不同的条件限制,也不能存在多个符合性?

我希望Swift能够让我在where块中为指定条件的类型创建扩展。我想象中,我可以根据具体的泛型类型值(T)用不同的扩展来扩展相同的泛型类型。但事实并非如此。以下示例演示了我的问题: protocol P { associatedtype Prop var prop...

10得票4回答
任何对象如何符合NSObjectProtocol?

这个问题的灵感来自于mz2在问题Check for object type fails with "is not a type" error上的回答。 考虑一个空的Swift类:class MyClass { } 尝试在此类的实例上调用任何NSObjectProtocol...

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

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

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

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

14得票3回答
Swift公共协议带有内部函数和属性

我正在考虑在使用协议时,将某些函数设置为公共的,而将一些函数设置为内部的最佳实践。我正在使用Swift 3编写一个AudioManager,它封装了AVPlayer作为框架。我希望某些方法是公开的,以便使用AudioManager的ViewController可以访问某些方法,但某些方法不会在...