0
我有以下代码:斯威夫特 - 扩展 - 协议 - “超级”功能不叫
protocol Viewable
{
func didAwakeFromNib()
func foo()
}
extension Viewable where Self:UIView
{
func didAwakeFromNib()
{
// NOT CALLED!
foo()
}
}
protocol Fontable:Viewable
{
func some1()
func some2()
func some3()
}
extension Fontable where Self:UIView
{
func didAwakeFromNib()
{
some1()
some2()
some3()
}
}
class UIButtonBase:UIButton,Fontable,Viewable //(Viewable Not necessary here because Fontable already conforms to Viewable)
{
override func awakeFromNib()
{
super.awakeFromNib()
didAwakeFromNib()
}
}
正如你可以看到我有2个协议进行扩展每个和1级的UIButtonBase
。
我是新来的斯威夫特,我想知道为什么我的func didAwakeFromNib()
在Viewable
不叫我在按钮类中调用didAwakeFromNib()
。 (按Fontable调用didAwakeFromNib()
,如我所料)。
嘿,首先 - 谢谢。但我没有看到区别。因为你写了两次“class UIButtonBase:UIButton,Fontable,Viewable”。这是你的意思吗? –
Ah typo ...查看更新的答案。 – Bilal
现在我看到:)。但是我想从Viewable AND Fontable中调用didAwakeFromNib。可能吗? –