「ビルド時」とは、実際にコードをコンパイルする前を意味する場合、スクリプトを実行するたびに Xcode を開く必要があることを意味します。これを行う方法があるとは思いません。ただし、Automator を使用してコードを実行する前に文字列を受け取ることはできますが、Automator を使用してアプリをビルドする必要があり、制限があります。もう 1 つの方法は、アプリに 2 つのクラスを作成することです。実行前クラスとメイン クラスです。事前実行クラスは、ユーザーにプロンプトを表示するか、ファイル (またはそのようなもの) を読み取って文字列を取得し、文字列に応じて特別な方法でメイン クラスを実行します。
編集:コメントへの応答
Objective-C でこれを行う方法はわかりませんが、いつでもメイン ファイルの名前を main.mm (.mm ファイルには C++ と Objective-C コードの両方が含まれています) に変更し、C++ コードを追加することができます。ただし、これはコンソールを使用しています。
using namespace std // all (this line is optional)
string s = ""; // this
cin >> s; // is C++ (if you omitted the optional line above, the correct code is std::cin >> s;
MainClass mc = //constructor for your "main class" here in Objective-C
if(s == someCertainString){ //hypothetical string and C++ condition checking for a C++ string
[mc doThisACertainWay:];
}else if(s == someOtherString){ // again, hypothetical string that you need to declare
[mc doThisADifferentWay];
}
今はPCではないのでコードは確認できませんが、C++やObj-Cでファイルを読み書きする方法を検索してみてください。私が今できる唯一のヒントは#include <iostream>
、ファイルの読み取り/書き込みに C++ を使用する場合、最初に必要だということです。
コンソールを使用したくない場合 (これを公開したい場合は正常です)、ダイアログを作成することもできます。この例では、C++ は必要ないため、メイン ファイルの名前を変更しません。起動時に表示される新しいウィンドウ (以降はこれと呼びますtheDialog
) を作成し、メインのグラフィカル インターフェイスが起動時に表示されないようにします。にテキスト フィールドを追加しtheDialog
、名前を付けます (この例ではtf
)。テキスト フィールドに入力する内容をユーザーに伝えるラベルを追加します。ボタンを追加してアクションにリンクします。このアクションでは、次のコードを挿入します。
MainClass mc = // constructor here
NSString *str = [self.tf stringValue];
if([str equalsString:someString]){ // hypothetical string and possible error in the condition checking, I'm new to Obj-C
[mc doThisInACertainWay];
} else {
[mc doThisInADifferentWay];
}