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.