[問題] 有關 navigation controller 的問題?
其實是有點雜的問題..
是拿朋友寫的 code 來作實驗玩的,所以有些問題也許很難重現也說不一定。
我所作的事基本上是在 AppDelegate 裡的
- (void)applicationDidFinishLaunching:(UIApplication *)application
改動別人所寫的初始化動作,將原本用 alloc / initWithNibName 作出來的
rootViewController 換成空白的
UIViewController *rootViewController = [[UIViewController alloc] init];
再交給 navigation controller 作初始化:
[[UINavigationController alloc]
initWithRootViewController: rootViewController];
我原本主要是想觀察 root view controller 的 retainCount 啦…
首先有點搞不懂的是,為什麼拿來生完 navigation controller之後,
retainCount 會從 1 變成 3 呢?除了 navigation controller 之外,
還有誰可能會在 initWithRootViewController 中 retain rootViewController??
即使我把 navigationController release 掉,
把 applicationDidFinishLaunching 中的 rootViewController 也 release 掉,
rootViewController 的 retainCount 仍然有 1…
再來就是,在 simulator 中我發現程式一開始竟然還是會先冒出原本正牌
RootViewController 的 view,然後才被清成白的…
而這只有第一次 build & debug 時才會發生,
如果在 simulator 中 quit app 再重開,就會直接出現空白的 nav bar + view…
請問這可能是為什麼呢?simulator 會 cache 住已開過的 app 嗎?
我有試過 "Reset Content and Settings...",結果並沒有改變。
會是哪邊有一開始的 Nib 設定嗎?
最後,是 navigationController 初始化完成之後,
將它加到 AppDelegate 的 IBOutlet UIWindow *window 的 subview 時的事:
[window addSubView: [navigationController view]];
這個動作一下將 rootViewController 的 retainCount 加了 10…
這又是大概發生了什麼事呢?
在用 XCode 的 template "Navigation-based application" 作出來的 project 中
也可以觀察到 addSubView 前後,rootViewController 的 retainCount
從 1 變成了 7…
如果這些問題的相關線索,
可以從 delegate protocol 的文件或是其它 guide 查詢得知的話,
也請各位先進指點一下文件名稱~感謝~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.168.82
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章