我创建了一个NSScanner类别方法,用于显示乐器中的泄漏。
- (BOOL)scanBetweenPrefix:(NSString *)prefix
andSuffix:(NSString *)suffix
intoString:(NSString **)value
{
NSCharacterSet *charactersToBeSkipped = [self charactersToBeSkipped];
[self setCharactersToBeSkipped:nil];
BOOL result = NO;
// find the prefix; the scanString method below fails if you don't do this
if (![self scanUpToString:prefix intoString:nil])
{
MY_LOG(@"Prefix %@ is missing.", prefix);
return result;
}
//scan the prefix and discard
[self scanString:prefix intoString:nil];
// scan the important part and save it
if ([self scanUpToString:suffix intoString:value]) // this line leaks
{
result = YES;
}
[self setCharactersToBeSkipped:charactersToBeSkipped];
return result;
}
我认为这是我将值传递给方法的方式,但我不确定。这是一个小泄漏(32字节),但如果可以,我想做正确的事。提前谢谢。
答案 0 :(得分:2)
我找到了答案。我有一个模型类使用上面的代码的结果,但忘了在dealloc方法中释放属性。我应该用乐器抓住它,但我不知道在哪里看。我在扩展详细信息中遇到了调用堆栈,它只有我需要的部分信息。
对于像我这样的蠢货,这就是我的所作所为:
您应该拥有malloc的版本以及历史记录中每个保留的版本。匹配您的保留和发布,并寻找奇怪的球。如有疑问,请查看页面底部,仔细查看您可能忘记在dealloc方法中发布的任何属性。
答案 1 :(得分:0)
在回答Yuji的评论时,我的方法是:
NSString *title;
[fileScanner scanBetweenPrefix:kTitlePrefix
andSuffix:kTitleSuffix
intoString:&title];
这是&标题是问题吗?我在现有的NSScanner方法和调用之后对其进行了构建。