У меня есть метод категории, который делает что-то вроде этого:
@implementation NSData (additions)
- (id)someFunc {
char *buffer = malloc(255);
NSUInteger length = 0;
while (true) {
// . . . fill buffer[length++];
}
realloc(buffer, length);
return [NSData dataWithBytesNoCopy:buffer length:length freeWhenDone:NO];
}
Затем я пытаюсь записать возвращенные данные (ну, назовите это NSData * fileData):
NSError *error;
NSData fileData = [NSData someFunc];
[fileData writeToFile:somePath options:NSDataWritingAtomic error:&error];
Я получаю сообщение об ошибке:
Ошибка домена = NSCocoaErrorDomain Code = 512 "Операция не может быть завершена. (Ошибка 512 какао.)" UserInfo = 0x20deffd0 {NSFilePath = / Users / user / Library /Поддержка приложений / iPhone Simulator / 4.3 / Приложения / 4C315580-153D-4FA7-9474-E17B58832515 / Библиотека / Caches / file.pdf, NSUnderlyingError = 0x20de1fe0 "Операция не может быть завершена. Неверный адрес"}
Путь существует и действителен.Я думаю, что проблема заключается в том, что возвращаемое NSData - просто легкая оболочка вокруг массива, выделенного с помощью malloc, и что writeToFile не знает, как с этим справиться.Кто-нибудь видит, что я делаю не так?