我正在尝试向UIView
添加扩展方法,以帮助找到特定类的最接近的祖先。在Objective-C中,我会这样声明
- (nullable __kindof UIView *)superviewOfClass:(Class)targetClass
在纯Swift中,我可以这样声明
func superview<T: UIView>(ofClass targetClass: T.Type) -> T?
但是当制作一个可以从ObjC调用的Swift方法时,我还没有找到一种方法来解决这个问题。我在这里
@objc func superview(ofClass targetClass: UIView.Type) -> UIView?
但是从ObjC调用时收到编译器警告:
UITableViewCell *cell = [myView superviewOfClass:[UITableViewCell class]];
incompatible pointer types initializing 'UITableViewCell *' with an expression
of type 'UIView * _Nullable'
Swift为此目的支持像Objective-C的__kindof
关键字吗?