小编cat*_*ate的帖子

XCode 5 Debug Navigator Memory不同意Instruments

我正在开发我的第一个ARC&Core Data项目,基于Xcode(通用)Master-Detail模板.我注意到Xcode5在Debug Navigator中有一个内存显示,但在使用它时,发现它的图形与运行Leaks&Allocations跟踪时在Instruments中显示的mem使用几乎没有相似之处.我已经使用模拟器进行了仪器跟踪(模拟iPhone和iPad - 以及后者的详细信息'卸载'与后者有所不同)以及iPad2和iPodTouch.结果大致相同:

iPhone 6.1模拟器

  1. A代-------- 1.13 MB
  2. B代-------- 397.70 KB
  3. C代-------- 76.96 KB
  4. D代-------- 11.70 KB
  5. E代-------- 1.56 KB
  6. F代-------- 3.48 KB

整体增长率为30%

其中,A代表显示Master表加载的增长,而每个连续的Generation都在Detail视图访问交互之后增长(分别需要获取NSManagedObjects创建NSObject).与其他设备的增长趋势大致相似(A代增长为iPad sim:1.42; iPad2:1.57; iPodTouch:0.94,但同样拖尾).

但是,根据Debug Navigator,每个点的使用量出现在:

iPhone 6.1 Debug Navigator

  1. A代-------- 4.2 MB
  2. B代-------- 6.9 MB - 增长2.7
  3. C代-------- 7.1 MB - 增长0.2
  4. D代-------- 7.8 MB - 增长0.7
  5. E世代-------- 8.0 MB - 增长0.2
  6. F代-------- 8.4 MB - 增长0.4
    整体增长100%!

参考其他类似的问题,我没有启用Zombies.有其他人看到过这样的差异吗?我是否正确倾向于相信仪器而不是Debug Navigator的总结数字?

PS.在运行真实设备时(两者都在iOS5版本上),Debug Navigator的摘要图似乎不可用.这是正常的吗?

memory-leaks instruments ios xcode5.0.1

4
推荐指数
1
解决办法
2573
查看次数

核心数据:什么时候用[refreshObject:obj mergeChanges:NO]"释放"未使用的NSManagedObjects?

我正在开发我的第一个Core Data项目,基于Xcode的(通用)Master-Detail模板上的NSManagedObjectModel开发阶段.基于ObjectModel的商店已经填充了各种对象的实例.

Nav Controller表视图中填充了12个顶级"Structures",每个"Structures"都有一个与之关联的"DefaultSpace".选择表行时,将根据DefaultSpace的属性使用各种UIView子类填充详细信息视图.从这里开始,我使用一系列临时NSObject子类来响应用户交互(当我开发这个阶段足以更全面地理解持久性需求时,其中一些将被NSManagedObjects取代).

因此,当我在详细视图中对给定的DefaultSpace进行一些测试并返回到Master表以选择另一个Structure的DefaultSpace时,我希望ARC释放不再需要的NSObject.在我的天真,我也期望Core Data对NSManagedObjects做同样的事情,但是仪器告诉我并非如此.

据我所知 [managedObjectContext refreshObject:obj mergeChanges:NO];,用于将现在多余的子对象转换为故障的方法.但是,这似乎意味着遍历关系链并调用[managedObjectContext refreshObject:obj mergeChanges:NO];每个从属NSManagedObject.我的问题是(在什么情况下)我应该这样做,还是我应该主要允许Core Data决定何时"清理"未使用的对象?

core-data objective-c ios

1
推荐指数
1
解决办法
1057
查看次数