[英]Objective-C, NSMutableData not released
我的應用有時會讀取,使用數據,然后可能需要稍后再讀取。 我注意到,如果我一旦讀取數據就將其釋放,但是如果碰巧再次讀取它,它將永遠不會被釋放。
如果再次讀取,為什么不釋放數據?
碼:
#import "AppDelegate.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[self readData]; // read one
NSLog(@"read1");
sleep(1);
[self readData2];
}
- (void)readData2 {
[self readData]; // read two
NSLog(@"read2");
}
- (void)readData {
__block NSMutableData *data = [NSMutableData dataWithContentsOfFile:@"test"]; // file is 125 MB
NSUInteger size = [data length];
for (NSUInteger i = 0; i < size; i++) {
// do stuff
}
return;
}
@end
嘗試將dataWithContentsOfFile:options:error
與option一起使用:
NSDataReadingMappedIfSafe
指示該文件的提示(如果可能和安全的話)應映射到虛擬內存中。
盡管沒有說明dataWithContentsOfFile
的描述,但不使用options
可能會導致否則保留數據。
dataWithContentsOfFile
此方法等效於無選項的dataWithContentsOfFile:options:error:。 如果您需要知道失敗的原因是什么,請使用dataWithContentsOfFile:options:error:。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.