4

iOS 用の Xcode でコンソール ツールを作成するためのヒントはありますか。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 に答える