【发布时间】:2015-03-11 18:03:03
【问题描述】:
我正在模拟器中针对我的应用运行 Xcode 泄漏工具(注意我没有运行分配工具)。
当我选择查看泄漏周期时,我得到的负载如下所示:
stracktrace 指向的代码是:
player.club = newClub
在我的应用中,一名球员属于一个俱乐部,我只是将其更新为一个新球员。
Club 和 Player 都是 NSManagedObject。
- 一个球员属于一个俱乐部
- 一个俱乐部有_许多球员
另外,当玩家移动俱乐部时,会创建一个新的TransferHistory(也是 NSManagedObject)
- 转会历史中有一名球员
转会历史有 to_club 和 from_club
一个俱乐部有很多
transfers_bought(逆:“TransferHistory.to_club”)一个俱乐部 has_many
transfers_sold(逆: "TransferHistory.from_club")
但是在 Instruments 中没有提到TransferHistory。
有人知道这张图片在说什么吗?
【问题讨论】:
-
信息如此之少,很难判断出什么问题。你能显示周围的代码吗?
club属性的类型是什么?它是否有反比关系,如果有,它有什么类型的属性? -
俱乐部确实存在反向关系。我已经用关于模型的其他信息更新了我的问题。
-
这里没有足够的信息。我知道 Core Data 本身没有任何泄漏,因此任何泄漏都会出现在您的代码中,我们需要帮助您。
-
图片中的 Instruments 循环视图显示了一些 Core Data 私有方法。该框架可能以自己的特殊方式进行内存管理(因为如果不是,那么到处都会有保留循环 - 请注意,反向关系表示为
retain属性!)。所以我不会太在意这张照片。问题可能出在您的代码中。你有自定义设置器吗?或者,也许您使用处理Player/Club实例的块?
标签: ios objective-c core-data memory-leaks