Iphone Когда поток очереди операций действительно запускается? - PullRequest
0 голосов
/ 25 мая 2011

При попытке кода, который выглядит следующим образом, в основном для тестирования


NSInvocationOperation *operation = [NSInvocationOperation alloc];
operation = [operation initWithTarget:self 
                             selector:@selector(dosignup:) 
                               object:params];   

while ( ![operation isFinished] ) [NSThread sleepForTimeInterval:0.1];

[operation release];

dosignup никогда не вызывается.Итак, я должен предположить, что селектор не будет вызван до тех пор, пока основной поток не обработает это, а не во время вставки очереди, такой как вилка и / или поток в .NET ... В любом случае, чтобы заставить очередь обрабатывать поток?


Ответы [ 2 ]

2 голосов
/ 25 мая 2011

Вы должны добавить свою операцию в NSOperationQueue или запустить ее вручную.

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(dosignup:) object:params];
[queue addOperation:operation];
[operation release];

[queue release];

или

NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(dosignup:) object:params];
[operation start];

Но я не знаю, что вы действительно хотите сделать, потому что ваш код сейчас имеет мало смысла.

0 голосов
/ 25 мая 2011

Вам нужно будет позвонить [operation start] для его выполнения.Имейте в виду, что NSInvocationOperation не является одновременным, поэтому он будет выполняться синхронно и не порождает поток.Это означает, что ваша текущая реализация примерно равна этому коду:

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