在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一个空的myThread
variables,然后调用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 :)并将对象作为零来传递。 所以可能是由于这个原因,它不工作。 这可能是一个原因。 只是尝试,如果没有。