在xcode中使用线程调用一个函数

我在xcode中创build了一个线程,我已经给出了从该线程调用的函数名称。 但我的问题是,调用的函数名称没有被调用(知道什么时候在该函数中放置一个断点)

码:

NSThread* myThread; [myThread start]; [self performSelector:@selector(func1:) onThread:myThread withObject:nil waitUntilDone:false] 

后来我也尝试了这一个:

 NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(func1:)object:nil]; [myThread start]; 

以上func1是要调用的函数的名称。

所以可以任何人请告诉我如何创build线程,并从那里调用func1 ….

在你的第一个代码示例中,它看起来并不像是在创build一个新的线程。 你创build一个空的myThreadvariables,然后调用start ,但这只会导致start发送到nil 。 然后将空的线程variables发送到performSelector:onThread:withObject:waitUntilDone:方法,这大概什么都不做。

在使用performSelector:onThread:withObject:waitUntilDone:实际运行之前,您需要正确地创build一个线程performSelector:onThread:withObject:waitUntilDone:

或者,假设你不关心该方法运行在哪个后台线程上,简单地使用performSelectorInBackground:withObject:会容易得多。 例如:

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

如果有效,请尝试以下操作:

 [NSThread detachNewThreadSelector:@selector(func1) toTarget:self withObject:nil]; 

既然你没有传递任何对象到你的“func1”(又名:你的方法没有参数),你不需要把“:”放在它的名字后面。

如果你的func1接受一个参数。 那么一定要用你使用的第二种方法。 可能是你的fuc1没有正式的参数,你仍然在这样的select器中调用@selector(fuc1 :)并将对象作为零来传递。 所以可能是由于这个原因,它不工作。 这可能是一个原因。 只是尝试,如果没有。