Sometimes you want to set global state before any of your other code runs. With Obj-C, you can override the
+load method for a class to do that. The
+load method runs once-only, automatically when the class is loaded at launch.
If you try to override the class
load() function in Swift, you will get the error "Method 'load()' defines Objective-C class method 'load', which is not permitted by Swift". So you have to fall back to overriding the class function
initialize() instead. There is a key difference between
initialize(). The former basically runs when the app starts up (when the class is loaded), but the latter only when the class is first used, so you might want to implement
initialize() for your class which implements
Either way, you should be careful not to put long running code in
initialize() because that will block the main thread and the launch of your app.