我收到很多低内存警告,并最终在iOS应用程序中崩溃。重置Swift数组会导致强引用?
我有理由相信它与UICollectionTable
的数据模型中包含的强/未知引用有关,该引用是BrowsableRecipe
类型的非可选对象的非可选数组。我初始化数组如下:
var recipes = [BrowsableRecipe]()
,其中数据是从服务器异步调用返回的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
复位到一个新的数据清单,我认为物体的旧阵列以某种方式仍然保持或点到每个BrowsableRecipe
都弄好了还现存在内存中。我认为它发生在这里:
self.recipes = data
这何处self.recipes
已定之后发生的事情,并data
指的是完全不同的BrowsableRecipes
名单。我是否需要通过阵列中的项目并将每个BrowsableRecipe
设置为nil
?此外,这可能会导致错误,因为BrowsableRecipe
不是可选的。
你的“理由相信”这是什么导致你的记忆问题?你已经显示的代码没有任何问题,只要没有别的东西持有它们,数组中的对象就会被释放。 – dan
你不需要“思考”;使用泄漏仪器。 – Paulw11