一直覺得 XCode 提供的 Instrument tool 很方便,習慣都會在 milestone build 做個 memory leak 檢查。
昨天卻發生了 memory leak 在 UIKit 裡面的現象
IssueViewController *nextController = [[IssueViewController alloc] init];
[self.navigationController pushViewController:nextController animated:YES];
[self.navigationController setNavigationBarHidden:YES animated:YES];
[nextController release];
Code 很標準,但是 Instrument 卻回報在 pushViewController 發生了 memory leak,不管在 simulator 或是實機都一樣。
翻翻 Google,看到很多人有過這種經驗,但是並沒有一致的原因,多半還都是沒有 solution。
在使用 Heap spot 也看不出問題的情形下,只好用最笨的隔離法測試,結果終於找到問題點了!
問題出在 pushViewController 的下一行
[self.navigationController setNavigationBarHidden:YES animated:YES];
原來在 push 後若是再對自己的 navigationController 動作,對導致 reference count 的增加,變成 memory leak...
移掉這行就 ok 了。
這情形不好抓,只好寫篇記錄~
No comments:
Post a Comment