3

関数で以下の行を使用しています

NSMutableData *data = [[NSMutableData alloc] init];  

そして、私はこの関数を時間のないものと呼んでいます (例: 100 回)。したがって、私の問題は、最初は約60回以上正常に機能していましたが、その後「BAD_EXC_ACCESS」が表示されることです

関数を以下に示します

+ (NSString *) recvToFile:(NSString *)_fileName {

@try {
    int _sz = [self recvNumber:4];
    uint8_t t[_sz];
    NSMutableData *data = [[NSMutableData alloc] init];
    NSMutableData *fileData = [[NSMutableData alloc] init];
        long _pos = 0;
        NSString *_fullPath = _fileName;
        while (_sz > _pos) {
            long _c = [m_sin read:t maxLength:_sz];
            _pos += _c;
            data = [NSData dataWithBytes:t length:_c];
            if([Misc checkFileExists:_fileName]==nil)
                [[NSFileManager defaultManager] createFileAtPath:_fullPath contents:nil attributes:nil];
            [fileData appendData:data];
        }
    [fileData writeToFile:_fullPath atomically:YES];
    NSDictionary *attr = [[NSFileManager defaultManager] attributesOfItemAtPath:_fullPath error:nil];

    long long length = [[attr valueForKey:@"NSFileSize"] intValue];
    if (length >= _sz)
        return (_fullPath);
}
@catch (NSException * e) {
}
return (nil);
}

そして、ファイルを受け取るたびにこの関数を呼び出しています。バイトからファイルを保存したい

4

2 に答える 2

0

ここではデータを初期化しないでください。

NSMutableData *data = [[NSMutableData alloc] init];

変数を nil に初期化するだけです。

NSMutableData* data = nil;
于 2012-11-28T07:27:43.767 に答える
0

このようなデータを nsmutabledata に追加してみてください

    [data appendBytes:t length:_c];
于 2012-11-28T07:38:09.407 に答える