Как уже отмечали другие, NSObject не существует ни в одном потоке, поток вступает в действие только тогда, когда вы начинаете выполнять его методы.
Мое предложение состоит в том, чтобы не использовать ручные потоки при каждом вызове метода для объекта, а вместо этого использовать NSOperations и NSOperationQueue. Имейте NSOperationQueue как переменную экземпляра объекта, и имейте вызовы к различным методам на объекте, создайте NSOperations, которые вставлены в очередь. NSOperationQueue будет обрабатывать эти операции в фоновом потоке, избегая всего ручного управления потоками, которое вам потребуется для множественного доступа к методам.
Если вы установите для этого NSOperationQueue максимальный счетчик параллелизма, равный 1, вы также можете избежать блокировки общих ресурсов в объекте между различными операциями, которые будут выполняться в фоновом потоке (конечно, вам все равно придется блокировать переменные экземпляра к которому можно получить доступ из внешнего мира).
Для обратных вызовов для делегатов или других объектов я бы рекомендовал использовать -performSelectorOnMainThread:withObject:waitUntilDone
, чтобы вам не приходилось думать о том, чтобы сделать эти методы делегатов поточно-безопасными.
Подробнее см. В Руководстве по программированию .