当我使用#selector将一个函数作为目标添加到UIButton时,应将其标记为@objc,这没关系。但是问题是@objc函数调用的每个函数和方法都必须符合Objective-C,否则应用程序将崩溃。
例如,当我使用Swift枚举(我也将该枚举声明为@objc)时,它会因错误unrecognized selector sent to instance而崩溃

使用@Objc是预期的行为,还是我做错了什么?

如果是这样,是否有解决方法,还是应该使所有由@objc调用的对象都符合Objective-C(在某些情况下,我需要重新编写大量代码)?

最佳答案

@objc属性使您的Swift API在Objective-C和Objective-C运行时中可用。

Swift 4版本启动后,很少有@objc推理案例。这意味着在其他一些情况下,在Swift编译器推断@objc标头之前,在Swift 4中不会推断。

因此,通过这种情况,您现在可以了解导致问题的原因以及如何使用@objc。

确保您使用的是快速语言版本4或更高版本。从目标->构建设置中找到Swift语言版本,以查看所使用的版本。

希望对您有所帮助。

关于ios - @objc之后调用的所有代码是否都必须符合Objective-C?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53519234/

10-14 22:27