私は多くのメモリ不足の警告を受けており、最終的にはiOSアプリでクラッシュしています。Swiftアレイをリセットすると、強い参照が発生しますか?
UICollectionTable
のデータモデルに含まれている強い/未知の参照と関係していると思われる何らかの理由があります。これは、非選択的なタイプのBrowsableRecipe
のオブジェクトの配列です。次のように私は配列を初期化:
BrowsableRecipe
秒のリストである
var recipes = [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
は
BrowsableRecipes
の完全に異なるリストを参照した後、これが起こっている
self.recipes = data
。配列内の項目を通過し、それぞれBrowsableRecipe
をnil
に設定する必要がありますか?また、BrowsableRecipe
はオプションではないため、エラーが発生する可能性があります。
これがあなたの記憶上の問題を引き起こす原因であると信じる理由は何ですか?あなたが示したコードには何も問題はありません。アレイ内のオブジェクトは、何も保持していない限り、解放されます。 – dan
"考える"必要はありません。漏出計器を使用してください。 – Paulw11