以下是苹果公司文档中UIScrollView的委托属性的描述
UIScrollView: UIView, NSCoding {
...
weak public var delegate: UIScrollViewDelegate?
...
}
UITableView的委托属性:
UITableView: UIScrollView, NSCoding {
...
weak public var delegate: UITableViewDelegate?
...
}
UITableView继承自UIScrollView。但是委托属性似乎与UIScrollView的属性无关。前面没有override
个关键字。它们属于不同的类型,尽管UITableViewDelegate继承自UIScrollViewDelegate。我认为这违反了swift的继承规则。我发现它是在我自己的课上做了一些测试后做的。这是我的测试代码:
public class SomeClassA {
weak public var delegate: UIScrollViewDelegate?
}
public class SomeClassB: SomeClassA {
//reporting "property 'delegate' with type 'UITableViewDelegate?' cannot
//override a property with type 'UIScrollViewDelegate?'"error
weak public var delegate: UITableViewDelegate?
}
问题出在哪里?