В текущем коде, который вы указали, getNewDatabase:
работает в главном потоке вашего приложения. В этом конкретном случае проблема заключается не в жизненном цикле нити, как заметил Джеймс в своем случае.
Если вы намеревались выполнить эту операцию в фоновом режиме, я бы рекомендовал использовать NSOperationQueue
и NSOperation
, а не решать проблему с текущим кодом. Я думаю, что ваш случай отлично подходит для NSOperationQueue
, особенно если учесть, что вам нужно выполнить более одной задачи загрузки.
У Дэйва Дрибина есть отличная статья об использовании асинхронного API, такого как NSURLConnection, внутри NSOperation
. В качестве альтернативы, пока вы работаете в фоновом потоке, вы также можете упростить процесс и просто использовать вместо этого в своей NSOperation синхронный метод API, например initWithContentsOfURL:
.
Маркус Зарра также написал учебное пособие , которое демонстрирует, как легко включить и использовать NSOperationQueue для простых фоновых операций.