簡體   English   中英

Objective-C,NSMutableData未發布

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM