簡體   English   中英

從Xcode 4.2升級到Xcode 5時,ARC似乎無法正常工作

[英]ARC not seems to be working when upgraded to Xcode 5 from Xcode 4.2

我正在使用Xcode 4.2中的項目進行操作,該項目未使用任何情節 提要,而是使用普通的xib。 ARC工作得非常好,對此感到滿意,沒問題。

現在,當我從Xcode 4.2升級到Xcode 5仍然不使用情節提要)時,出現了奇怪的問題。 我使用“ popViewControllerAnimated”功能彈出一個屏幕,很明顯,該屏幕已彈出。

但是在分析內存分配時,我發現即使彈出屏幕后也不會釋放屏幕內存。

此外,當我再次打開該屏幕時,即使關閉它也會分配並釋放內存。 似乎更像是一個保留周期,但我該確定我從未使用過'retain'

現在,我已經升級到Xcode 5.1.1 ,這個奇怪的問題仍然存在。

將項目轉換為“ Storyboard”設計對我來說是一個沉重的負擔,這就是為什么我保留普通的xib。

我現在已經厭倦了Googleing和搜索包括Stackoverflow.com在內的所有論壇。

伙計們,請幫助我找出問題所在。

它對我來說是個救星

ARC不是魔術。 ARC跟蹤對對象的強引用。 當對一個對象的強(擁有)引用數降至零時,該對象將被釋放。

如果沒有釋放您的視圖控制器之一,則意味着在某處對其有很強的引用。 一種可能性是“保留周期”,其中兩個對象彼此之間具有很強的引用性。 當您執行以下操作時會發生這種情況:擁有一個擁有另一個幫助對象的對象,並且該幫助對象具有指向該擁有對象的(強)指針。 通常的解決方案是使所有者對它們的對象保持強引用,而使所有者對所有者的指針變弱(例如委托)。

SO讀者無法找到適合您的問題。

您是否嘗試過在代碼上運行分析工具? 它可能為您指出了問題。 您還應該按照Phillip的建議通過Leaks工具運行程序。 這兩種工具都非常有用,盡管都不是100%可靠的。

否則,您可能需要找到一個高級iOS開發人員,您可以與他們坐下來進行代碼審查。 通常,在向其他人解釋程序的邏輯和實現的過程中,您自己會發現問題。

檢查是否在一個視圖控制器中設置了彈出視圖控制器的委托。 因為當關閉彈出的視圖控制器時,必須將委托設置為nil。 忘記這一點很常見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM