在xcode项目中使用系统调用有什么优点和缺点

时间:2016-07-14 10:20:11

标签: macos

我正在开发一个MAC OSX桌面应用程序,用于检查特定ip的可达性我总是使用

streets = c("Berberichweg", "Otto-Klemperer-Weg", "Feldmeierbogen", "Konrad-Adenauer-Platz", "anotherThing") patterns = c("weg", "platz") unique(grep(paste(patterns, collapse="|"), streets, value=TRUE, ignore.case = TRUE)) [1] "Berberichweg" "Otto-Klemperer-Weg" "Konrad-Adenauer-Platz"

这是一种好方法还是其他任何方式。我尝试了apple reachability类,但结果并不像预期的那样。我也尝试过使用AFNetworking但效果不佳。通过这个系统调用我得到了很好的结果,但我想知道使用它的缺点或任何其他有效的最佳方式。

2 个答案:

答案 0 :(得分:2)

没有

如果你想要shell,你应该看一下NSTask,这提供了一个完整的fledge API,允许你与系统进行交互。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSTask_Class/

  

使用NSTask类,您的程序可以将另一个程序作为子进程运行,并可以监视该程序的执行情况。 NSTask对象创建一个单独的可执行实体;它与NSThread的不同之处在于它不会与创建它的进程共享内存空间。

答案 1 :(得分:1)

  

这是一个好方法

不,这很可怕。

使用system()是昂贵的,因为它导致分叉和执行另一个进程,并且它提供了一个非常尴尬的接口,因为你必须找到一种解析其输出的方法(popen()更好,但是仍然很贵)。

此外,如果您打算将应用程序提交到Mac App Store,则需要对其进行沙盒处理,并且可能无法运行ping(不确定)。

请参阅此Apple Guide了解正确的方法。如果您在使用Reachability API时遇到问题,那么您应该开始一个新问题来解决这些问题。