Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用命令行API的程序的iOS GUI?_Ios_Swift - Fatal编程技术网

使用命令行API的程序的iOS GUI?

使用命令行API的程序的iOS GUI?,ios,swift,Ios,Swift,我正在尝试在iOS中为象棋类游戏引擎制作一个GUI前端,其中API通过std输入/输出。它采用的API称为。它允许GUI和引擎的解耦,这样就可以轻松地交换任意一个组件 当然,当通过终端构建和运行时,这项功能很好。我还知道,我可以通过使用NSTask为它创建macOS GUI,但是在NSTask不可用的情况下,我如何将这样的程序整合到iOS应用程序中 有没有办法在iOS中生成一个子流程,然后我可以连接UI按钮向该子流程发送文本命令?(同样,从程序中读取标准输出的标签) 或者我必须进入引擎的源代码并

我正在尝试在iOS中为象棋类游戏引擎制作一个GUI前端,其中API通过std输入/输出。它采用的API称为。它允许GUI和引擎的解耦,这样就可以轻松地交换任意一个组件

当然,当通过终端构建和运行时,这项功能很好。我还知道,我可以通过使用
NSTask
为它创建macOS GUI,但是在
NSTask
不可用的情况下,我如何将这样的程序整合到iOS应用程序中

有没有办法在iOS中生成一个子流程,然后我可以连接UI按钮向该子流程发送文本命令?(同样,从程序中读取标准输出的标签)


或者我必须进入引擎的源代码并连接调用函数本身吗?这似乎会首先挫败拥有GUI协议的目的。还是我得自己把整个引擎装进Swift

不清楚您所说的“…引擎GUI协议是通过std输入/输出通过文本命令与之通信。”GUI代表“图形用户界面”。基于终端的文本界面与图形用户界面完全相反。这是一个命令行界面。你是说游戏引擎的
API
(不是GUI)是通过命令行实现的吗

iOS dos不允许应用产生任何类型的子进程。您可以将第三方框架构建到您的应用程序中,这些第三方框架可能有一个API,该API以文本输入的形式接收命令


也可以让第三方应用程序同时运行,并通过自定义URL方案执行命令,但iOS并不真正支持这种有意义的多处理,除非您在iOS 10和11的iPad上使用分屏界面,我不确定这是否/有多好。

我的意思是我想在使用命令行界面的程序之上创建一个GUI。引擎的API是通过命令行实现的。所以当你说framework时,这是否意味着我必须调用程序源函数来解析标准输入?听起来像是这样,是的。您没有提供足够的关于“C++游戏引擎”的信息,因此无法得出结论。它是什么?它是如何提供的?它是一个代码库吗?它提供了什么API?你能回去编辑你的问题来澄清吗?写的第一句话没有意义。它是一个shogi引擎,基本上是日本象棋。Shogi引擎使用与大多数现代象棋引擎非常相似的API,该API指定引擎到GUI的连接应该如何工作。其目的是允许GUI和引擎的单独开发,即允许通过解耦实现引擎或GUI的互换性。我已经更新了我的问题,你能认为我可以把C++代码和桥接头包含在一起,然后用某种方法向引擎发送文本命令,这些引擎会在后台循环运行。我认为这将是一个单独的线程而不是子进程,但我不完全知道它是如何在iOS上工作的。您会考虑<代码> OpenpTy(3)< /C++ >创建一个伪TrimeAL和<代码> DUP2(2)< /C> >将其提交给STDIN/STDUT/STDER,然后启动C++代码吗?它应该可以解决您不能使用
NSTask
,但阅读它需要一段时间。@Mats这是一个有趣的方法!我猜会有一些我可以使用的Obj-C实现?我可以试试看它是否管用。希望不会有任何性能问题。