I\'m using Parse and I\'m creating a PFObject subclass conforming to the protocol PFSubclassing! It was working all fine, but now I\'m using Swift 1.2 and it gives me this
There is an NSHispster article about method swizzling that touches on this in different context:
Unfortunately, a load class method implemented in Swift is never called by the runtime, rendering that recommendation an impossibility. Instead, we're left to pick among second-choice options:
Implement method swizzling in initialize. This can be done safely, so long as you check the type at execution time and wrap the swizzling in dispatch_once (which you should be doing anyway).
Implement method swizzling in the app delegate. Instead of adding method swizzling via a class extension, simply add a method to the app delegate to be executed when application(_:didFinishLaunchingWithOptions:) is called. Depending on the classes you're modifying, this may be sufficient and should guarantee your code is executed every time.
Link: http://nshipster.com/swift-objc-runtime/
-
More info form dev forums:
Swift 1.1 allowed you to define "+load" methods with "class func load()", but they were not actually run at startup time of your app like Objective-C +load methods are. Swift 1.2 bans them to avoid the impression that this might work.
Link: https://devforums.apple.com/message/1102025#1102025
-
tl;dr initialize()
and didFinishLaunchingWithOptions
seem to be decent places for such things in Swift.