|
@@ -14,14 +14,31 @@
|
|
|
|
|
|
## 多页签
|
|
|
|
|
|
-- 页签操作 KMBrowser
|
|
|
+- 页签操作 KMBrowser [CTTabStripModel 实际操作对象]
|
|
|
- 窗口控制器 KMBrowserWindowController
|
|
|
- 窗口 KMBrowserWindow
|
|
|
+- 页签区域控制器 KMTabStripController
|
|
|
- 页签区域 KMTabStripView
|
|
|
- 页签控制器 CTTabController
|
|
|
- 页签视图 CTTabView
|
|
|
-- 页签内容控制器 CTTabContentsController
|
|
|
+- 页签内容控制器 CTTabContentsController [KMHomeViewController + KMMainViewController 都是显示在其上]
|
|
|
- 页签内容提供者 CTTabContents(文档 当前App对应的是 KMMainDocument)
|
|
|
+
|
|
|
+- 页签拖拽 CTTabStripDragController
|
|
|
+
|
|
|
+* 内存管理
|
|
|
+1. KMBrowser [-> CTTabStripModel -> KMMainDocument] -> KMMainDocument -> KMBrowser
|
|
|
+2. 环形内存引用 让内存不释放。在适当的时机断环来释放内存,避免循环引用.
|
|
|
+3. KMBrowser -> KMBrowserWindowController 因强引用 页签窗口控制器,这也是页签窗口控制器没有被持有而没有释放的原因.
|
|
|
+
|
|
|
+* 事件传递
|
|
|
+1. target-action [KMTabStripController -> CTTabController, CTTabController --> KMTabStripController(target)]
|
|
|
+2. 响应者链 [NewTabButton]
|
|
|
+3. 通知 [CTTabStripModel]
|
|
|
+4. 代理 [KMBrowser -> CTTabStripModel, CTTabStripModel --> KMBrowser(delegate)]
|
|
|
+
|
|
|
+* 维护建议
|
|
|
+1. 新增功能或修复bug,尽量通过重写类来处理,保证三方库内部尽可能少的改动.
|
|
|
|
|
|
|
|
|
## App 主要模块的入口
|