2012-11-01 38 views
1

我是計算機程序設計第二年的學生,他正在研究Objective C中的程序(如果有問題的話,Xcode)。現在,我們正在製作動畫並在屏幕上移動動畫對象。現在,我正在處理一個令我瘋狂的錯誤。我的程序正在使用ARC,自動引用計數,據推測這應該有助於內存管理。然而,出於某種原因,我似乎無法使用有沒有辦法在自動引用計數中重寫dealloc?爲什麼它不起作用?

[super dealloc]; 

它總是給我一個錯誤,指出「ARC禁止‘的dealloc’

爲什麼這是明確的消息發送?我該如何解決?它它工作在我的其他程序,只是沒有這一個

此外,發行似乎並沒有任何工作。例如,下面的代碼給了我2個錯誤: [火球發佈];

?錯誤說「'release'不可用:不可用自動引用計數模式「,下一個錯誤表示」ARC禁止'釋放'的顯式消息發送。「爲什麼會發生這種情況,我該如何解決?此代碼適用於我的其他程序。有人可以解釋,或至少提供一個鏈接,可以解決我所有的問題?感謝您的閱讀

回答

0

簡單,只需刪除該行。 ARC負責所有發佈/ autorelease/dealloc調用。 ARC在對象的生命週期中具有100%(相當多)的洞察力,併爲您插入這些調用。

儘管如此,仍然可以重寫dealloc方法來進行一些清理。

+0

我評論了這些線條,這與刪除它們基本相同,對吧?好吧,它給了我一個錯誤,說:鏈接器命令失敗,退出代碼1(使用-v來查看調用),這個錯誤看起來很坦白,很可怕。這是什麼,我該如何解決它? – user1791941

2

你可以定義你自己的dealloc方法,你只是不能調用[super dealloc](ARC會自動調用它)。同樣是真實的版本,你不需要把它作爲ARC處理將其放置在你的代碼

+0

我評論了這些線條,這與刪除它們基本相同,對吧?好吧,它給了我一個錯誤,說:鏈接器命令失敗,退出代碼1(使用-v來查看調用),這個錯誤看起來很坦白,很可怕。這是什麼,我該如何解決它? – user1791941

+0

你能發表一些代碼嗎?它很難在沒有看到你的方法的情況下進行調試 – Kyle

3

你應該花一些時間來通過Apple's Guide on ARC

完全走這將節省您大量時間,它的絕對值得理解的東西。

+1

雖然沒有使用ARC,但是在使用「手動引用計數」的情況下,您可以通過使用像retain一樣的命令來明確地跟蹤是否要保留特定對象''''釋放'和'autorelease'來通知運行時何時可以處理一個對象。藉助ARC(自動引用計數),它可以自動確定何時不再引用某個對象,以便在不再使用它時可以對其進行處理。因此,手動方法中使用的這些命令不再被使用/需要/允許。 – lnafziger

+0

我評論了這些線條,這與刪除它們基本相同,對吧?好吧,它給了我一個錯誤,說:鏈接器命令失敗,退出代碼1(使用-v來查看調用),這個錯誤看起來很坦白,很可怕。這是什麼,我該如何解決它?您是否閱讀過指南,請致電 – user1791941

+0

? – jere

相關問題