一尘不染

方法load()定义了Objective-C类方法“加载”,Swift 1.2不允许这样做

swift

我正在使用Parse,并且正在创建一个符合PFSubclassing协议的PFObject子类!一切正常,但是现在我使用的是Swift
1.2,它给了我这个错误:

1. override class func load() {
2.      self.registerSubclass()
3. }

在第1行上:方法“ load()”定义了Objective-C类方法“加载”,Swift 1.2不允许这样做

有人有这个问题吗?我该如何解决?


阅读 506

收藏
2020-07-07

共1个答案

一尘不染

NSHispster上有一篇关于方法混乱的文章,它在不同的上下文中涉及到此:

不幸的是,运行时从未调用过在Swift中实现的加载类方法,从而使该建议成为不可能。相反,我们只能选择第二种选择:

  • 实现初始化中的方法。
    只要您在执行时检查类型并将所有问题包装在dispatch_once中(无论如何您都应该这样做),就可以安全地完成此操作。

  • 在应用程序委托中实现方法混乱。
    无需通过类扩展添加麻烦的方法,只需在调用application(_:didFinishLaunchingWithOptions
    :)时将方法添加到要执行的应用程序委托中即可。根据您要修改的类,这可能就足够了,并且应确保每次都执行您的代码。

链接:http//nshipster.com/swift-
objc-runtime/

--

来自开发者论坛的更多信息:

Swift 1.1允许您使用“类func load()”定义“ + load”方法,但它们实际上并没有像Objective-C +
load方法那样在您的应用启动时运行。Swift 1.2禁止它们避免这种效果的印象。

链接:https//devforums.apple.com/message/1102025#1102025

--

tl; dr initialize()didFinishLaunchingWithOptions在Swift中似乎是个不错的地方。

2020-07-07