有人能告诉我为什么下面的代码在ARC下泄漏内存?我用Instruments测试了它们,它显示它们会导致内存泄漏,但我不知道如何修复它们?iOS:内存泄漏代码
static inline NSString* cachePathForKey(NSString* directory, NSString* key) {
return [directory stringByAppendingPathComponent:key]; //leak
}
@property (nonatomic,strong) NSMutableData *postBody;
if (![self postBody]) {
[self setPostBody:[NSMutableData data]]; //leak
}
另一个问题是:这些仪器显示我 “所有堆分配” 和 “所有匿名VM” 直播字节。例如,如果一个应用程序占用超过80M(例如),它会崩溃。那么80M意味着全部堆分配或两者都?
UPDATE:
正如下面我评论人提到,我现在工作的变化非ARC ASIHttpRequest电弧模式。泄漏来了。就拿ASIInputStream例如:
+ (id)inputStreamWithData:(NSData *)data request:(ASIHTTPRequest *)theRequest {
ASIInputStream *theStream = [[self alloc] init]; //leak 42%
[theStream setRequest:theRequest];
NSInputStream *is = [NSInputStream inputStreamWithData:data]; //leak 58%
[theStream setStream:is];
return theStream;
}
我似乎不是泄漏给我! – Merlevede
它是如何告诉你它们会导致内存泄漏? –
这是否在后台线程中调用? – Pang