因此,我開始一個新的NSThread,我希望能夠稍後使用通過調用performSelector:onThread:...
。根據我的理解,它調用方法將該調用添加到該線程上的runloop,因此在下一次迭代時,它將彈出所有這些調用,並隨後調用它們,直到沒有任何剩餘的調用。所以我需要這種功能,一個空閒的線程準備工作,我可以調用它。我目前的代碼如下所示:保持NSThread活着,並運行它的NSRunLoop
- (void)doInitialize
{
mThread = [[NSThread alloc] initWithTarget:self selector:@selector(runThread) object:nil];
[mthread start];
}
- (void)runThread
{
NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init];
// From what I understand from the Google machine is that this call should start the
// runloop on this thread, but it DOESN'T. The thread dies and is un-callable
[[NSRunLoop currentRunLoop] run];
[pool drain];
}
- (void)scheduleSomethingOnThread
{
[self performSelector:@selector(hardWork) onThread:mThread withObject:nil waitUntilDone:NO];
}
但是線程不保持活動狀態,並且performSelector:onThread不執行任何操作。我如何以正確的方式去做這件事?
謝謝,這是一個有點清晰了。 – ErikPerik 2011-06-08 01:43:31
這對命令行工具中的主運行循環也是如此。它是NS/UIApplication,它在GUI應用程序的主運行循環中提供默認輸入源。 – 2011-06-08 02:13:51