我收到许多内存不足警告,最终导致我的iOS应用程序崩溃。
我有理由相信它与UICollectionTable
的数据模型中包含的强/未知引用有关,BrowsableRecipe
是一个非可选的类型{{1}的非可选对象数组}。我按如下方式初始化数组:
var recipes = [BrowsableRecipe]()
其中data是从服务器的异步调用返回的BrowsableRecipe
列表。
ServerMessenger.sharedInstance.getRecipesForHomePage(recipeIndex, pageSize: pageSize){ responseObject, error in
if let data = responseObject{
//TODO confirm first recipe object doesn't have error param set!
self.recipes = data
self.recipeIndex = self.recipeIndex + 1
dispatch_async(dispatch_get_main_queue()) {
self.collectionView!.reloadData()
}
}
我认为问题在于,当我将数组self.recipes
重置为新的数据列表时,我认为旧的对象数组仍然以某种方式保持或者每个{{1}的点数在某种程度上仍然存在于记忆中。我认为它发生在这里:
BrowsableRecipe
在设置 self.recipes = data
后发生这种情况,self.recipes
引用完全不同的data
列表。我是否需要浏览数组中的项目并将每个BrowsableRecipes
设置为BrowsableRecipe
?这也可能导致错误,因为nil
不是可选的。
答案 0 :(得分:0)
第一次"排空"像这样的数组:
self.recipes = []
或
self.recipes.removeAll
之前的self.recipes = data
?