iphone - 将 iOS 上的 printf 重定向到用户界面

标签 iphone objective-c ios multithreading pipe

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

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

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

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

最佳答案

对于并发,使用调度队列进行最快的编程。 See this guide: http://developer.apple.com/library/ios/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html

要打印到屏幕上,您可以通过多种不同的方式来实现,但如果您只是想立即在屏幕上显示文本,则只需使用 UILabel。您也可以稍后将其格式化。

多线程的主要缺陷与在任何操作系统上一样 - 锁定任何具有同步读/写的数据模型。您可以使用 @synchronize 或使用 dispatch barriers 使您的调度队列线程安全,这也在上面的链接指南中提到。

关于iphone - 将 iOS 上的 printf 重定向到用户界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11937467/

相关文章:

iphone - 支付宝ios6问题

iphone - 如何使 iOS 5 中的亮度变化永久化?

objective-c - 初始化编码器 : not visible in NSObject?

ios - 为什么我的 UIButton 图像大小在模拟器和设备中不同?

iphone - 当用户按下按钮显示日期选择器 View 并选择日期然后显示为按钮标题并进一步关闭日期选择器 View

iOS - 绘制渐变 - Swift

iphone - 跟踪 Xcode 中的变量或内存变化?

iphone - 为什么 UIButton 不需要分配和初始化?

iphone - 从具有多对多关系核心数据 iOS 的上下文中删除 nsmanagedobject

iphone - 是否可以转换带有一些音符的音频文件?