答案 0 :(得分:1)
您可以很轻松地约束associatedtype:
public protocol MJRfreshAble {
associatedtype RefreshableViewType where RefreshableViewType: UIScrollView
var refreshableView: RefreshableViewType { get }
}
class TestVC1: UIViewController, MJRfreshAble {
typealias RefreshableViewType = UITableView
let tableView = UITableView()
var refreshableView: RefreshableViewType {
return tableView
}
}
class TestVC2: UIViewController, MJRfreshAble {
typealias RefreshableViewType = UICollectionView
let collectionView = UICollectionView()
var refreshableView: RefreshableViewType {
return collectionView
}
}