Junior — Middle
Can you explain what the term Swizzling means in programming?
sobes.tech AI
Answer from AI
Swizzling in programming, especially in iOS and Objective-C, is a technique of dynamically replacing the implementation of a method at runtime. This allows changing the behavior of existing class methods without modifying their source code.
For example, you can replace the standard viewDidLoad method in UIViewController with your own, adding additional functionality while calling the original method within the new implementation.
Example in Objective-C:
#import <objc/runtime.h>
@implementation UIViewController (Swizzling)
+ (void)load {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Class class = [self class];
SEL originalSelector = @selector(viewDidLoad);
SEL swizzledSelector = @selector(xxx_viewDidLoad);
Method originalMethod = class_getInstanceMethod(class, originalSelector);
Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
method_exchangeImplementations(originalMethod, swizzledMethod);
});
}
- (void)xxx_viewDidLoad {
[self xxx_viewDidLoad]; // call the original viewDidLoad
NSLog(@"viewDidLoad swizzled");
}
@end
Swizzling is useful for adding logging, analytics, or fixing bugs in third-party libraries, but it requires caution as it dynamically changes the behavior of system classes.