美文网首页
Objective-C转Swift问题小记

Objective-C转Swift问题小记

作者: 成都老刘 | 来源:发表于2023-03-17 23:52 被阅读0次
  1. responds(to:)编译器报错: Cannot find 'setWindow' in scope
delegate.responds(to: #selector(setWindow:))

解决路径:
首先,采用OC代码

if ([delegate respondsToSelector:@selector(setWindow:)]) {
    [delegate setWindow:window];
}

然后,在https://okaxaki.github.io/objc2swift/online.html 上转成swift代码(老版本Swift代码)

if subDelegate.respondsToSelector(Selector("setWindow:")) {
    subDelegate.window = window
}

注意这里Selector("setWindow:"),这种方式有一个优势是,只需要字符串就能生成一个Selector,但是IDE会报一个警告。如果不想要警告,就需要转成#selector(setter: self.window),需要当前文件提供一个属性window.
即,复制代码到Xcode中,根据IDE的提示,更新代码,最后得到代码:

let setWindowSel = #selector(setter: self.window)
if delegate.responds(to: setWindowSel) {
    delegate.perform(setWindowSel, with: window)
}

相关文章

网友评论

      本文标题:Objective-C转Swift问题小记

      本文链接:https://www.haomeiwen.com/subject/izksrdtx.html