我需要将Class的属性定义为类型UIViewController
并实现协议MyProtocol
。在Objective-C中,我可以编写类似
UIViewController<MyProtocol> myProperty;
我在文档上找不到任何内容,所以我认为这是不可能的:/你能否确认...这里是添加更多信息的示例代码
class SignInPresenter {
var myProperty:UIViewController and MyProtocol <--- here is the problem.
答案 0 :(得分:1)
你有两个选择。您可以使用带有类型约束的Generic,也可以使用带有类型约束的协议扩展。
对于泛型,它看起来像:
protocol P1 {
}
class X {
}
class Y : X, P1 {
}
class Z<T: X,P1> {
var myProp : T?
}
在协议扩展的情况下,您可以使用协议提供所需的方法和属性,并在类(例如UIViewController)实现协议时使用扩展来实现特定情况。如果你真的不需要UIViewController,这可能是一个更好的选择,但它将在实践中使用。我更喜欢这种设计,因为它允许更松散的耦合。
答案 1 :(得分:-2)
首先,用逗号定义多个协议。例如,
class SearchResultsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, APIControllerProtocol
其次,变量不符合协议。从Apple的文档中,&#34;协议定义了适合特定任务或功能的方法,属性和其他要求的蓝图。然后,可以通过类,结构或枚举来采用该协议,以提供这些要求的实际实现。任何满足协议要求的类型都被认为符合该协议。&#34;