[英]objective-c/ios track screen usage
比方说,我想在我的项目中为所有UIViewController
(包括子类)对象的viewDidAppear:
方法中放置一些代码:
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSLog(@"Did show: %@:%@", NSStringFromClass([self class]), self.title);
}
有没有办法在不使用类别( UIViewController
)的情况下执行此操作,而无需手动将所有视图控制器的超类更改为定义此方法的新类?
我不想使用类别的原因是因为我可能想要定义方法并调用它们的超级实现。
例如,是否可以在UIViewController
和在运行时(或使用预处理器宏)从UIViewController
继承的任何其他类之间自动添加中间类?
实现这一目标的常用方法称为方法调配。 Mike Ash有一篇关于如何正确执行此操作的文章 。
一般的想法是交换Objective-C方法的原始实现。 通常从插入的函数/方法调用原始实现。
以下是Mike的文章引用:
强制性警告
在您不拥有的类上覆盖方法是一项危险的业务。 您的覆盖可能会通过打破相关类的假设而导致问题。 如果可能的话,尽量避免使用它。 如果必须这样做,请特别小心地对覆盖进行编码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.