我一直在拍摄某个过程的快照。所有镜头中的所有泄漏对象均源自此方法:
- (void)setArticle:(Article *)article
{
if (_article != article)
{
[self.navigationController popToViewController:self animated:YES];
[_article removeObserver:self forKeyPath:kArticleObservationKey];
[_article release];
_article = [article retain];
[_article addObserver:self forKeyPath:kArticleObservationKey options:NSKeyValueObservingOptionNew context:&__ArticleObservingContext];
[_article loadIfNeededWithPriority:OGRequestPriorityHigh downloadAllImage:NO];
[_article fetchRelatedStories];
}
[self resetArticleView]; // 65% of heapshot allocations
if ([_article.isStub boolValue])
{
[self.view showSpinner];
}
if (_article)
{
[Analytics articleReadWithParmeters:[NSDictionary dictionaryWithObject:_article.idOnServer forKey:AnalyticsKeyArticleId]]; // 32% of heapshot allocations
}
}
这是实际的快照,它们看起来都与此相同:
我有几个问题:
- 我的下一步是什么?我没有看到这种方法有任何泄漏,为什么它在 heapshots 中如此突出?
[self resetArticleView]
旁边有 65%,但该特定方法没有显示在我的泄漏对象的堆栈跟踪中。我是否误解了特定的 65% 指定的含义?如果它确实意味着它包含 65% 的泄漏分配,为什么该方法不在任何堆栈跟踪中?