奇怪的是,子线程上的IPhone performSelector不起作用。

时间:2012-02-29 06:07:37

标签: iphone multithreading selector

我想使用以下API对线程执行某些操作,因此未调用奇怪的选择器poiOneBoxSearch,为什么?代码有什么错误吗?谢谢。

- (void)poiOneBoxSearch{
     [self poiOneBoxSearcWithQueryString:@"coffee" isFinished:YES];
}

- (void)test1{
     NSThread* thread = [[NSThread alloc] init];
     [self performSelector:@selector(poiOneBoxSearch)
               onThread:thread
             withObject:nil
          waitUntilDone:YES];
     [thread release];
}

3 个答案:

答案 0 :(得分:2)

如果您想使用 performSelector 方法,请阅读以下链接 ,我想你错过了什么

Please Goes Through This Link

如果不是,您可以使用以下代码。

试试这个

 - (void)test1{
[NSThread detachNewThreadSelector:@selector(poiOneBoxSearch) toTarget:self withObject:nil];
 }

答案 1 :(得分:0)

试试这个:

[self performSelectorInBackground:@selector(poiOneBoxSearch) withObject:nil waitUntilDone:YES];

答案 2 :(得分:0)

[self performSelectorInBackground:@selector(poiOneBoxSearch) withObject:nil];

- (void) poiOneBoxSearch{
          @autoreleasepool { 
     [self poiOneBoxSearcWithQueryString:@"coffee" isFinished:YES];
} }

您必须记住的最重要的事情是,由于此方法在给定选择器上创建一个线程,因此选择器必须具有自动释放池,就像引用计数内存环境中的任何其他线程一样。