6

我对 Xcode 和 Objective-C 很陌生,所以我还不知道自己在做什么!;-)
基本上我想要一个可以运行两个线程的 iPhone 应用程序,稍后将UDP Sockets用于与其他应用程序通信。

start-Thread/stop-Thread当按下 UI 中的按钮时,我已经设置了函数来做出反应,现在我想用代码填充它们以实际创建和启动线程。

  • 这里的正确程序是什么?

  • 我需要子类 NSThread吗?

  • 我在哪里实现新线程将执行的代码?

    我看不到运行方法或类似的东西。我想这与selector我不明白的有关。

4

4 回答 4

15

使用调度队列。它们本质上是轻量级线程,您无需直接担心线程或排队。

-(void) spawn
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        [self doWorkInBackground];
    });
}

您可以使用内置队列之一或您自己的。

而且您可能也应该阅读,特别是内存管理方面。

于 2012-11-13T16:59:31.340 回答
2
- (void)performBlockInBackground:(void (^)())block {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        block();
    });
}

然后你这样称呼它:

[self performBlockInBackground:^{
    NSLog(@"Log from background");
}];
于 2012-11-13T17:12:39.967 回答
1

这是一个非常深入的讨论,但 Apple 的“并发编程指南”应该可以帮助您入门。

于 2012-11-13T16:58:26.073 回答
1

您也可以考虑使用NSOperation。它在后台使用调度队列,但提供更高级别的 API 和取消正在进行的操作的可能性(这可能对您有帮助)。

于 2013-05-16T08:13:37.800 回答