Xcode 10.2.1与swift的一个大坑

304 阅读1分钟

问题描述:

同一套代码在debug模式下运行良好,在release下有些方法(我遇到的是代理方法)不运行。(Xcode10.2.1) 换一个低版本Xcode版本后release后又能正常跑。

问题原因:

代理方法定义的时候用来@objc标签 如 @objc optional func collectionViewExcuteDelete(fadeView: UIView, completion: () -> Void)

解决方式:

在声明这些代理方法的时候需要加上@objc标签,否则release状态下无法调用改该方法。 @objc func collectionViewExcuteDelete(fadeView: UIView, completion: () -> Void) { print("ExcuteDelete") }

调试技巧

在Xcode中可以切换运行环境如图

image.png