Ваши настройки в значительной степени верны. Вы никогда не захотите инициировать какое-либо сетевое соединение в главном потоке.
В текущем состоянии -returnObjectToAsker
будет выполняться в фоновом потоке.
Возможно, вас заинтересует -[NSObject performSelectorOnMainThread:withObject:waitUntilDone:]
.
Или, если вы хотите что-то с Grand Central Dispatch (iOS 4+, Mac OS X 10.6+), вы можете сделать:
#import <dispatch/dispatch.h>
- (void)giveMeSomeData:(id)object withLabel:(id)label {
dispatch_async(dispatch_get_global_queue(0,0), ^{
//this runs on a background thread
//get data from the internet
dataFromTheInternet = ...;
dispatch_async(dispatch_get_main_queue(), ^{
[object receiveData:dataFromTheInternet withLabel:label];
//this runs on the main thread. Use theData
});
});
}
Поскольку блоки захватывают свое окружение, вам даже не придется экономить на object
и label
в иварах. :)