Хорошо: я реализую Совместный доступ к файлам в приложении iPhone OS, и конечно это означает контроль файловой системы. Yay!
В основном ОС копирует и/или удаляет от, и до каталога я могу получить доступ, когда пользователь управляет файлами в раздел моего приложения в iTunes. Таким образом я должен контролировать каталог для изменений, по-видимому, с помощью эффективного механизма как a kqueue()
.
Как я реализую это так, чтобы я знал, что файлы закончили копировать? Я думал вроде:
kqueue()
.но есть ли лучший способ сделать его, который гарантирует, что я не переступаю через пальцы ног ОС?
Это только частичный ответ, но может быть в некоторой степени полезным.
Механизм kqueue действительно работает как средство уведомления об изменении каталога документов приложения.
Уведомление приходит, как только каталог изменяется и до завершения копирования файла. Я наблюдал это при тестировании.
К сожалению, форма уведомления о завершении копирования отсутствует. По крайней мере, ничего из того, что я не нашел.
Я надеюсь, что Apple осознает необходимость уведомления о «синхронизации iTunes», потому что это, похоже, общая проблема.
Цикл, проверяющий, не изменяется ли время модификации нового файла, может работать, но только большую часть времени. В некоторых экстремальных обстоятельствах iOS может приостановить работу, чтобы выполнить все виды трудоемкой работы в фоновом режиме.
Если есть способ проверить, открыт ли конкретный файл другим процессом, этого будет достаточно.
Джефф