有人能告訴我爲什麼下面的代碼在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