removeItemAtPath для файла, уже открытого - PullRequest
2 голосов
/ 22 октября 2010

У меня есть файл, открытый на iPhone, по которому я отправляю данные по сети (открывается с помощью «_open»).Однако у меня есть возможность удалять файлы из интерфейса iphone.Это делается с помощью removeItemAtPath NSFileManager.

Странно, что removeItemAtPath успешно выполняется, даже если файл в данный момент открыт.

Файл прекрасно передается по сети, и удалениеItemAtPath завершается успешно до завершения передачи.Так действительно ли removeItemAtPath выполняет отложенное удаление?то есть он ставит его в очередь на потом, если файл используется?Если это так, то никаких проблем.

Если нет ... Кто-нибудь знает, как я могу заставить NSFileManager фактически сообщать о том факте, что он не выполнял удаление?

1 Ответ

3 голосов
/ 22 октября 2010

Согласно документации на

http://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/occ/instm/NSObject/fileManager:shouldRemoveItemAtPath:

shouldRemoveItemAtPath возвращает YES, если операция должна продолжаться, не обязательно, что она уже успешно удалила элемент. Также интересно, что в документации говорится:

Обсуждение Возврат NO из этого метода приводит к тому, что NSFileManager прекращает удаление элемента. Если элемент является каталогом, дочерние элементы этого элемента также не удаляются.

Чтение, которое приводит меня к мысли, что это асинхронная операция, и что возвращаемое значение этого метода не должно использоваться для определения того, был ли файл успешно удален. Я предполагаю, что он помещает объект в очередь для удаления и будет удален, когда файл больше не используется.

...