Swift - 属性类型和协议
问题描述:
在我的一个Objective-C类中,我有一个UIViewController<UIProfileListHeaderDelegate>
类型的属性,我将如何在Swift中表示该属性?我需要访问UIViewController
和UIProfileListHeaderDelegate
的属性和方法。Swift - 属性类型和协议
谢谢!
答
处理此问题的快速方法是定义一个协议,其中包含从UIViewController
开始的相关方法,并让您的UIProfileListHeaderDelegate
继承该协议。
定义与自己关心的方法的协议:
protocol ViewControllerSubset {
var view:UIView!
}
声明一个UIViewController中实现了协议,并不需要实际执行任何东西,因为它已经存在
extension UIViewController : ViewControllerSubset {}
继承你的协议从那
protocol UIProfileListHeaderDelegate : ViewControllerSubset
而你走了。
如果你不想改变你的协议的层次结构(或不能因为它是一个系统协议),您可以定义包含两个协议的协议)
protocol EquatableAndComparable : Equatable, Comparable { }
其实我试过,但我可能没有做正确的搜索。我想过使用泛型,但似乎并非如此。我也尝试创建一个typealias,但我找不到它的正确语法。 – 2014-09-02 12:53:52
看起来像http://*.com/questions/25172430/how-to-declare-a-property-of-a-particular-class-which-is-also-protocol-conforman的重复,虽然没有好的答案那里。其实问题似乎不容易通过谷歌搜索 – 2014-09-02 13:05:07
@codingVoldemort你有什么想法吗? – 2014-09-02 13:36:34