swizzle 方法 置换, 都说是 ios中的黑魔法 。以前在tabbar中 使用过,前几天 碰到页面访问统计 也使用到了。 简单 简述一下实现原理,与应用场景。
原理 : http://blog.csdn.net/yiyaaixuexi/article/details/9374411
应用场景:
@implementation UIViewController (Swizzle)
- (void)customViewDidAppear:(BOOL)animated{
[self customViewDidAppear:animated];
}
- (void)customViewWillDisappear:(BOOL)animated{
[AVAnalytics endLogPageView:NSStringFromClass([self class])];
DLog(@"customViewWillDisappear = : %@", NSStringFromClass([self class]));
[self customViewWillDisappear:animated];
}
- (void)customviewWillAppear:(BOOL)animated{
DLog(@"customviewWillAppear = : %@", NSStringFromClass([self class]));
// [AVAnalytics start];
[AVAnalytics beginLogPageView:NSStringFromClass([self class])];
[self customviewWillAppear:animated];
}
+ (void)load{
swizzleAllViewController();
}
@end
void swizzleAllViewController()
{
Swizzle([UIViewController class], @selector(viewDidAppear:), @selector(customViewDidAppear:));
Swizzle([UIViewController class], @selector(viewWillDisappear:), @selector(customViewWillDisappear:));
Swizzle([UIViewController class], @selector(viewWillAppear:), @selector(customviewWillAppear:));
}