2009-12-23 177 views
0

在我的一個導航視圖控制器中,我構建了一個字典數組以在表中顯示。基於哪一個我選擇我然後從數組中刪除字典使用 NSDictionary * notice = [notices objectAtIndex:roomIndex];從視圖控制器傳遞字典

我使用 創建新的視圖控制器Feed * notice_view = [[Notice alloc] initWithObject:notice];

我推導航視圖控制器,我已經實現了需要一個詞典的initWithObject。

我發佈通知和notice_view,所有這些工作正常,但如果我選擇回去,選擇它回顧第三次或第四次整個應用程序崩潰。如果我不釋放他們兩個,它工作正常沒有任何問題,除了內存泄漏,當然除外。如果我只釋放其中的一個,其中任何一個,它再次失敗。是什麼賦予了?我應該不使用initWithObject,還是應該以其他方式傳遞它?我也嘗試使用autorelease但結果相同。

+0

如果您發佈一些代碼,獲得幫助可能會更容易。 – chris 2009-12-23 04:34:20

回答

1

注意 - 您不應該釋放,因爲您不擁有該對象(您只是使用從NSArray返回的對象),否則在從NSArray檢索對象並在稍後階段釋放對象時保留此對象。

notice_view - 按照你的解釋我沒有看到任何與釋放有關的問題,我假設你沒有從代碼的其他部分對這個對象的任何引用。

+0

通知 - 當然是有道理的。 k,我試圖剛剛發佈notice_view,我敢肯定,我曾嘗試過相同的結果,但現在它的工作很好-_- 感謝您的回覆:) – Rudiger 2009-12-23 04:48:36

+0

我想通了,另一個問題。如果我在Notice_view中聲明一個Dictionary並將傳入的字典複製到它中,如果我說dictionary =它在第三次去之後失敗,如果我說self.dictionary =它的猶太教。我來自其他語言,所以請原諒我,如果這是noob或錯誤 – Rudiger 2009-12-23 04:55:29

+0

dictionary =它 - >在這種情況下,你保持指針引用,但你沒有擁有該對象(如果你想擁有對象字典= [它保留]) self.dictionary =它 - > self.dictionary在這種情況下,您正在使用默認的setter方法定義使用「屬性」(目標C 2.0),它將保留計數添加到對象(由對象使其自己) – 2009-12-23 05:32:38

0

我猜你會想擺脫[selectedNotice發佈],因爲那裏似乎沒有相應的-retain調用。

相關問題