我正在开发一个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但效果不佳。通过这个系统调用我得到了很好的结果,但我想知道使用它的缺点或任何其他有效的最佳方式。
答案 0 :(得分:2)
没有
如果你想要shell,你应该看一下NSTask,这提供了一个完整的fledge API,允许你与系统进行交互。
使用NSTask类,您的程序可以将另一个程序作为子进程运行,并可以监视该程序的执行情况。 NSTask对象创建一个单独的可执行实体;它与NSThread的不同之处在于它不会与创建它的进程共享内存空间。
答案 1 :(得分:1)
这是一个好方法
不,这很可怕。
使用system()
是昂贵的,因为它导致分叉和执行另一个进程,并且它提供了一个非常尴尬的接口,因为你必须找到一种解析其输出的方法(popen()
更好,但是仍然很贵)。
此外,如果您打算将应用程序提交到Mac App Store,则需要对其进行沙盒处理,并且可能无法运行ping
(不确定)。
请参阅此Apple Guide了解正确的方法。如果您在使用Reachability API时遇到问题,那么您应该开始一个新问题来解决这些问题。