2

我是 iOS 开发(和 Obj-C)的新手,我正在尝试将现有的 C 程序移植到 iOS。

C程序通常在控制台中运行,但我想在iPhone上为它制作一个UI。我已经移植了 C 代码,当模拟器运行时,我可以在控制台窗口中获得 printf 输出。我想尽可能避免更改原始代码,所以这是我的计划:

  1. 该程序需要一些时间来执行,所以我想我需要在单独的线程上运行它。看起来我只需要一个 NSInvocationOperation 来调用它的主要方法。
  2. 我会将标准输出重定向到管道。
  3. 在另一个线程上,我将从管道中读取,并将其扔给 UI。我不确定为此使用的最佳并发 API 是什么。

这对 iOS 来说是一个好的策略,还是有更好的移植方法?有什么我应该注意的陷阱吗?

4

1 回答 1

1

对于并发,使用调度队列进行最快的编程。请参阅本指南:http://developer.apple.com/library/ios/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html

要打印到屏幕上,您可以通过多种不同的方式执行此操作,但UILabel如果您只想立即将文本显示在屏幕上,只需使用 a。您也可以稍后很好地格式化它。

多线程的主要缺陷就像在任何操作系统上一样——锁定任何同时读/写的数据模型。您可以通过使用上面链接指南中的说明来使用@synchronize或使您的调度队列线程安全。dispatch barriers

于 2012-08-13T15:40:57.937 回答