簡體   English   中英

在Xcode 5.1.1中發現的問題,而不是在Xcode 6中發現的問題

[英]Issue found in Xcode 5.1.1 and not in Xcode 6

如果我從Xcode 5構建應用程序並在裝有iOS 8的設備上運行該應用程序,我會遇到問題,並顯示崩潰並顯示錯誤消息

[myViewController numberOfSectionsInTableView:] message sent to deallocated instance 0x1846c960

我已經分配了以下課程

@property (strong, nonatomic) MyViewController *myViewController;

myViewController =[[MyViewController alloc]initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]];
myViewController.userDetailsDict=userDetailsDict;
[self.navController pushViewController:self.myViewController animated:FALSE];

如果我從Xcode 6構建相同的應用程序,那么我看不到任何問題,它可以正常工作。

有沒有人遇到過類似的問題。 有幫助嗎?

該警告是由於在構建方案中啟用了NSZombieEnabled而導致的(請參閱鏈接的問題)。

在某個時候,當MyViewController不再存在時[MyViewController numberOfSectionsInTableView:]被調用-不再有對該對象的引用,因此將其釋放。


至於為什么在Xcode 5而不是Xcode 6上發生這種情況,這可能是與設備相比,您的應用程序在模擬器中的配置或狀態的結果-例如,一個環境是否包含另一個環境所不包含的數據或設置?

從您的代碼中,我可以看到MyViewController可能是UITableViewDataSource 一個設備/模擬器是否包含另一個沒有的表視圖數據? 如果是這樣,這就是為什么該錯誤將在一個環境中而不在另一個環境中出現的原因。 會同時出現在兩者中,但是只有一個具有必要的設置/配置才能觸發被調用的方法。

為了解決該問題,您需要監視MyViewController的對象生命周期-即何時創建,何時訪問,何時釋放/可能釋放它。 在某些時候,仍要使用視圖控制器時將其釋放。 這個StackOverflow答案提供了有關如何使用Instruments來跟蹤和修復這類錯誤的極佳指南。

暫無
暫無

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

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