一种监视任何UIView负载的方法

时间:2014-03-31 15:07:00

标签: ios objective-c uiview code-injection

实际上这是一个简单的问题,可能不是中心解决方案的答案。

我想用一种方法来监控每个UIView开始 - 结束加载以获取应用程序的指标。

我可以看到,在UIViewController类中,viewWillLoad并不存在,而viewWillAppear也不能用于此目的。

这在任何方面都可行吗?我想在应用程序中搜索每个UIView继承的类并以某种方式注入代码,但正如我所说,我将需要两种方法。 或者可能将代码注入UIView类中已存在的协议?

有什么想法吗?

问候。

1 个答案:

答案 0 :(得分:0)

如果您只关心加载每个视图控制器的根视图。您可以{UveriewController的swizzle -loadView和-viewDidLoad。您可以使用为每个调用它们的实例的表添加开始和结束时间的方法来交换它们。但请记住,只是测量它的行为,你将减慢负载。


如果你想跟踪每个视图的加载,你可以用同样的方式在UIView上调用-initWithFrame。在您的方法版本中,您将在调用真实版本之前开始跟踪,并在实际方法退出后停止跟踪。但是,如果您的自定义视图具有自己的初始化程序,则必须提供更复杂的版本。 但是我不建议这样做。初始化视图所花费的时间可能更短,或者至少非常接近跟踪它所花费的时间,使得时间毫无价值。