在创建和获取Core Data对象时,Debug Memory Graph
和Instruments
中存在一些相互矛盾且有些混乱的内存分配报告。
Xcode 8
Swift 3
iOS 10
(看一下/克隆自:https://github.com/sovata8/TestingCoreDataAllocations/)
我有以下简单的应用设置。
Book
(自动生成NSManagedObject
子类,其名称与Xcode的默认行为相同。)create book
和list all books
可以满足您的期望。create book
一次。Debug Memory Graph
(新的Xcode 8功能,记得完成检查后,按'"继续执行程序")书(1)
Book_Book_(1)
(括号中的内容是实例数)
create book
两次。Debug Memory Graph
:书(1)
Book_Book_(3)
在Debug Memory Graph
上下文中,Book_Book_
指的是我们实际的Book
类的实例,而Book
指的是其他内容的实例,而且它不是&#39 ;当创造更多书籍时增加。所以它可能指的是像实体描述或某种“蓝图”这样的东西。或者'对象工厂'。
create book
三次。Debug Memory Graph
:书(1)
Book_Book_(3)
list all books
一次Debug Memory Graph
:书(6)
Book_Book_(3)
Debug Memory Graph > Book
从1增加到6。
按list all books
以上(一次或多次)
Debug Memory Graph
我重新做了App Run Steps A
和B
,但这次不是查看Debug Memory Graph
,而是使用Instruments
应用(Xcode>产品&gt ;配置文件)与Allocations
分析模板(显示All Heap & Anonymous VM
)。我正在调查Details > Statistics > Allocation Summary > # Total
,在过滤器中我将单词Book
。
使用App Run Steps A
我看到了与使用Debug Memory Graph
时相同的内容。 (Book
- 1,Book_Book
- 3)
使用App Run Steps B
,按list all books
并未改变任何内容。所有分配计数保持不变(Book
- 1,Book_Book
- 3)。
Debug Memory Graph
在Book
应用1
中按下6
时,list all books
显示Instruments
从Book
增加到1
} Debug Memory Graph > Book
。
Debug Memory Graph
是指什么?它是否与核心数据的一些新功能有关(WWDC 2016谈到"查询生成和#34;例如)Instruments
和Responsible Caller
显示不同的内容?哪一个是正确的? instruments app会显示Book
为:
PFPlaceHolderSingleton
- Book_Book_
PFAllocateObject
- <div id="searchContainer">
<input [(ngModel)]="search"
(ngModelChange)="filterSearch()"
(focus)="showSearchList=true;"
(blur)="showSearchList=false"
type="text"
id="searchJobs"
placeholder=" Search"/>
<div *ngIf="showSearchList"
id="searchDropdown">
<p *ngFor="let result of filteredSearchResults; let index = index;"
(click)="addResultToResults(index); search='';">
{{result}}
</p>
</div>
</div>
有时人们会报告Instruments和Xcode之间的差异,原因是Xcode Run操作使用Debug配置,而Instruments使用Release配置。我尝试使用Debug或两者都是Release,结果与上面描述的相同。