Было бы хорошо, если бы вы могли прояснить вопрос, потому что трудно понять, что именно вы хотите сделать и в чем проблема. В общем случае код пользовательского интерфейса должен всегда выполняться в основном потоке. Это ясно указано в документации по Какао, и вам не удастся создать несколько потоков, пытающихся управлять пользовательским интерфейсом.
Если вы хотите запускать код в других потоках и оказывать на них влияние на пользовательский интерфейс, вам необходимо реализовать механизмы для передачи информации в основной поток. Один метод, который пригодится - это NSObject
performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
Если вы хотите использовать уведомления, вы также должны отправлять их в основной поток. Легко запутаться в ошибках, если вы не будете придерживаться этого принципа (хотя на первый взгляд может показаться, что все работает).