在@objc之后调用的所有代码都需要符合Objective-C吗



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

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

如果是的话,有没有一个变通方法,或者我应该让@objc调用的所有东西都符合objective-C(在某些情况下,我需要重写一大堆代码(?

@objc属性使Swift API在Objective-C&Objective-C运行时。

Swift 4版本推出后,@objc的推理案例很少被删除。这意味着在少数其他情况下,@objc标头之前是由Swift编译器推断的,在Swift 4中没有推断。

因此,通过这些案例,您现在可以了解问题的原因;如何使用@objc。

请确保您使用的是swift语言版本4或更新版本。从targets->Build设置中找到Swift Language版本,查看您使用的版本。

我希望它能有所帮助。

在对代码进行了大量实验后,我注意到问题是由于将自定义对象保存到UserDefaults,而没有使用NSKeyedArchiver进行存档。

最新更新