Re: [問題]ARC下 內存崩潰
※ 引述《boy19931118 (boy19931118)》之銘言:
: 我有一個Navigation
: A寫了自定義Button Push View B
: UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
: bundle: nil];
: LocationWebView *lvc = [storyboard
: instantiateViewControllerWithIdentifier:@"LocationWebView"];
: [self.navigationController pushViewController:lvc animated:YES];
: 程式碼大概是這樣 因為MAC暫時不在身邊 無法拿自己的程式碼
: 而B也寫了一個返回Button
: [[self navigationController] popViewControllerAnimated:YES];
: 但是返回A後 B的內存並沒有被釋放 所以只要不停的A>B>A>B>A>B
: 使用記憶體就會持續上升
: 希望能指點一下
你可能先確定是不是 B 沒有被釋放,記憶體上升有很多種原因,
不見得是 B 造成的。你可以試試看在 B class 中先寫一個空的 dealloc
然後在 dealloc 的地方打一個 break point,看看是否真的沒有呼叫到。
如果 B 真的沒有被釋放,就是有別的地方 retain 了 B。常見
有幾種可能:
1. 是不是 A 還有其他 property 指向 B?
2. B 有沒有哪些 property 是 block,而 block 裡頭呼叫了 self?
3. B 裡頭有沒有 timer 物件的 target 是 self,而在離開 B
的時候沒有停止 timer?timer 的 target 會被 timer
retain 一份,而如果 view controller 有 timer 的話,
我們就不該把 invalidate timer 寫在 dealloc 的地方,而是
要寫在 viewDidDisappear 之類的地方。
: 問題二 -------------------------------
: 或許這部分我應該自己去處理
: 要是您太熱心的話 就回答吧
: 對於@property (XXX,XXX)
: 我應該怎麼判斷 什麼樣的物件 適合選擇什麼樣的計數器?
: 現階段而言 所需要的東西都是網路上複製的.....
你的意思是是用 strong、weak、assign 嗎?
1. 是 objetive-c 物件的話,除了 delegate,都用 strong
2. delegate 用 weak
3. 是 block 就用 copy
4. 是 C 的 primitive types 的變數就用 assign
: 問題三 ------------------------------------
: 兩個StoryBoard之間 要傳遞參數 該採用哪種方法?
: 我目前大多都使用 extern 來傳遞
: 但缺點是 必須在程式第一個.h檔內就宣告好
: 好像不太符合邏輯
: 也有使用過Userdefault來存取
: 這個好像適用於存取使用者設定之類的比較妥當
: 而近日才知道 delegate 委派
: 好像也有用類別來傳取的方法
: 請問各位大多都使用哪種方法?
呃,你的意思是,你都用 global variable 來傳遞東西?@_@
然後我猜你說「用類別來傳取」大概是 singleton。
如果兩個物件之間沒有直接的 reference,然後還要交換資料,
大概來說還有其他幾種方法,比方說透過 NSNotificationCenter,
這樣 B class 假如訂閱了某個屬於 A class 的 notificaiton,
當某個 A 的 instance 發送 notification 的時候,B class
的 instance 就算無法跟任何 A class 的 instance 之間有任何
reference,都還是可以收得到。
另外一種方法是透過 UIPasteboard XD,你可以嘗試建立一個只有
你自己知道名字的剪貼簿,然後用平常用在複製/貼上的這層 API
來傳遞資料,這種作法不但可以跨 Storyboard,還可以直接跨 App
而且就算重新開機,剪貼簿裡頭的資料也不會被清掉。 :p
--
zonble.net
cocoa.zonble.net
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.116.128
※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1449163876.A.646.html
推
12/04 12:54, , 1F
12/04 12:54, 1F
推
12/05 12:37, , 2F
12/05 12:37, 2F
→
12/05 12:44, , 3F
12/05 12:44, 3F
推
12/05 12:47, , 4F
12/05 12:47, 4F
討論串 (同標題文章)