Skip to content

Commit 8373de0

Browse files
committed
🚀 Update code format
1 parent d54b635 commit 8373de0

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

Diff for: README.md

+17-17
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,23 @@
2424
页面渲染的监控,这个需求看似很简单,但是在实际开发的过程中还是会遇到不少问题。比较容易想到的是通过 hook 页面的几个关键的生命周期方法,例如 `viewDidLoad``viewDidAppear:` 等,从而计算出页面渲染时间,最终发现慢加载的页面。然而如果真正通过上述思路去着手实现的时候,便会遇到难题。在 APM SDK 中如何才能 hook 应用所有页面的生命周期的方法呢?如果尝试 hook `UIViewController` 的方法又会如何呢?hook `UIViewController` 的方法明显不可行,原因是他只会作用 `UIViewController` 的方法,而应用中大部分的视图控制器都是继承自 `UIViewController` 的,所以这种方法不可行。但是听云 SDK 却能够实现。页面 Hook 的逻辑主要是 `_priv_NBSUIAgent` 类中实现的,下面是 `_priv_NBSUIAgent` 类的定义,其中 `hook_viewDidLoad` 等几个方法便是线索。
2525

2626
```
27-
; @class _priv_NBSUIAgent : NSObject {
28-
; +hookUIImage
29-
; +hookNSManagedObjectContext
30-
; +hookNSJSONSerialization
31-
; +hookNSData
32-
; +hookNSArray
33-
; +hookNSDictionary
34-
; +hook_viewDidLoad:
35-
; +hook_viewWillAppear:
36-
; +hook_viewDidAppear:
37-
; +hook_viewWillLayoutSubviews:
38-
; +hook_viewDidLayoutSubviews:
39-
; +nbs_jump_initialize:
40-
; +hookSubOfController
41-
; +hookFMDB
42-
; +start
43-
; }
27+
@class _priv_NBSUIAgent : NSObject {
28+
+hookUIImage
29+
+hookNSManagedObjectContext
30+
+hookNSJSONSerialization
31+
+hookNSData
32+
+hookNSArray
33+
+hookNSDictionary
34+
+hook_viewDidLoad:
35+
+hook_viewWillAppear:
36+
+hook_viewDidAppear:
37+
+hook_viewWillLayoutSubviews:
38+
+hook_viewDidLayoutSubviews:
39+
+nbs_jump_initialize:
40+
+hookSubOfController
41+
+hookFMDB
42+
+start
43+
}
4444
```
4545

4646
我们先将目光转到另外一个更可疑的方法:`hookSubOfController`,具体实现如下:

0 commit comments

Comments
 (0)