gpt4 book ai didi

ios - objective-c/ios 跟踪屏幕使用情况

转载 作者:行者123 更新时间:2023-11-28 22:14:33 25 4
gpt4 key购买 nike

例如,我想在 viewDidAppear: 方法中为我的项目中的所有 UIViewController(包括子类)对象放置一些代码:

-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];

NSLog(@"Did show: %@:%@", NSStringFromClass([self class]), self.title);
}

有没有一种方法可以做到这一点而不使用类别(对于 UIViewController),并且不必手动将我所有 View Controller 的父类(super class)更改为定义此方法的新类?
我不想使用类别的原因是因为我可能想定义方法并调用它们的 super 实现。

例如,是否可以在运行时(或使用预处理器宏)在 UIViewController 和继承自 UIViewController 的任何其他类之间自动添加一个中间类?

最佳答案

实现此目的的常用方法称为方法调配。 Mike Ash has an article如何正确地做到这一点。

总体思路是交换 Objective-C 方法的原始实现。通常您从插入的函数/方法调用原始实现。

这里引用 Mike 的文章:

The Obligatory Warning

Overriding methods on classes you don't own is a dangerous business. Your override could cause problems by breaking the assumptions of the class in question. Avoid it if it's at all possible. If you must do it, code your override with extreme care.

关于ios - objective-c/ios 跟踪屏幕使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22039497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com