4

有没有人有一些关于在 Xcode for iOS 中创建控制台工具的提示。我想通过launchd运行它,它应该向服务器发送请求。

但是我找不到在 Xcode for ARM 中编译没有 UI 的“应用程序”的任何方法。

谢谢

4

2 回答 2

3

我同意另一个答案,安装 iOSOpenDev 通常是解决这个问题的正确方法。安装后,它会向 Xcode 添加新模板。然后,您可以使用File -> New -> Target...将新目标添加到您的项目中。从一个名为Command-line Tool的iOSOpenDev模板中进行选择。

但是,如果这不是一个选项,或者您想知道如何以另一种方式做到这一点,那么这并不太难。

只需创建一个新的 Xcode 项目。对于项目类型,从最简单的开始......可能是iOS -> Application -> Single View Application

创建项目后,只需删除任何 View、ViewController 或 .xib 文件,因为您不会使用它们。在您的框架列表(项目设置 -> 构建阶段)中,您可以删除 UIKit.framework 或任何其他非图形工具不需要的内容。

然后,只需进入生成的 main.m 文件,并删除其对UIApplicationMain(). 相反,我通常创建一个主守护程序类,然后从 main.m 中以类似的方式启动它:

#import "HelloDaemon.h"

int main(int argc, char *argv[]) {
   @autoreleasepool {
      HelloDaemon* daemon = [[HelloDaemon alloc] init];
      
      // start a timer so that the process does not exit.
      NSTimer* timer = [[NSTimer alloc] initWithFireDate: [NSDate date]
                                                interval: 1.0
                                                  target: daemon
                                                selector: @selector(run:)
                                                userInfo: nil
                                                 repeats: NO];
      
      NSRunLoop* runLoop = [NSRunLoop currentRunLoop];
      [runLoop addTimer: timer forMode: NSDefaultRunLoopMode];
      [runLoop run];
   }
   
   return 0;
}

我的守护程序类包含一个run:方法:

-(void) run:(NSTimer *) timer;

当您为 iOS 设备(不是模拟器!)构建这个“应用程序”时,它会将其粘贴在构建输出目录中,例如:

./Build/Products/Debug-iphoneos/HelloDaemon.app/HelloDaemon

可执行文件是HelloDaemon.app 目录下的文件。将其复制到您的 iPhone,并从命令行使用它,作为启动守护程序,或者您想要的其他任何方式。

参考

Chris Alvares 关于启动守护进程的旧但很好的教程

于 2014-03-25T06:53:37.520 回答
1

iOSOpenDev提供您所描述的内容。

于 2014-03-19T19:52:52.993 回答