Убить задачу через 10 секунд в Core Data - PullRequest
2 голосов
/ 04 октября 2010

У меня есть функция, которая иногда занимает слишком много времени для запуска. Я хочу попытаться запустить его в течение 10 секунд, а затем просто убить его, если это не сделано. Как мне сделать это в Objective C на iPhone?

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

NSPersistentStoreCoordinator* psc = [[[NSPersistentStoreCoordinator alloc] 
                                        initWithManagedObjectModel: [self managedObjectModelForDatabase:dbName]] autorelease];

Ответы [ 2 ]

1 голос
/ 04 октября 2010

Можете ли вы выполнить слияние в другом потоке (не забудьте сделать другой NSManagedObjectContext для этого фонового потока), а затем просто сделать так, чтобы основной поток отображал сообщение о ходе выполнения в ожидании асинхронного события завершения из потока фоновой миграции

Я делаю это в одном из моих приложений с тоннами данных, чтобы iPhone не убивал мое приложение во время процесса слияния.

0 голосов
/ 04 октября 2010

Вы можете использовать -performSelector:withObject:afterDelay:, чтобы запланировать отправку сообщения в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...