0

私はObjective-cを使用してMacで自作用のGUIを構築しようとしていますが、次のコードでインストールされたパッケージを表示しようとすると空になりますが、updateなどの他のコマンドを試してみると結果が得られますjavaと同じで、同じエラーが発生します。

Gitページ:プロジェクトを支援してください。Objective-cを初めて使用する場合、コードに多くのエラーが発生する可能性があります。

NSTask *task;
task=[[NSTask alloc]init];
[task setLaunchPath:@"/Users/rogeriop062/homebrew/bin/brew"];

NSArray *arguments;
arguments = [NSArray arrayWithObjects:@"list",nil];
[task setArguments: arguments];

NSPipe *pipe;
pipe =[NSPipe pipe];
[task setStandardOutput:pipe];


NSFileHandle *file;
file=[pipe fileHandleForReading];

[task launch];


NSMutableData *data=[NSMutableData dataWithCapacity:1000];

while ([task isRunning]) {

    [data appendData:[file readDataToEndOfFile]];
}
[data appendData:[file readDataToEndOfFile]];


NSString *string;
string =[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"result: %@\n",string);
4

1 に答える 1

0

それは興味深いプロジェクトです。よかったね!Homebrewは私のMacで非常にうまく機能します。あなたのコードに何も問題はありません。私はあなたのコードを私のiMacのテストルーチンに貼り付けました、そしてそれは完全に機能しました。それは私がbrewでインストールしたプログラムをリストしました。1行に1つ、予想外でしたが、機能しました。ごめん。

これを試すこともできます。メソッド内のすべてを最後まで削除し、[task launch]次のように置き換えます。

task.terminationHandler = ^(NSTask *blockTask) {
    NSMutableData *data=[NSMutableData dataWithCapacity:1000];
    [data appendData:[file readDataToEndOfFile]];
    NSString * string =[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"result: %@\n",string);
};
[task launch];

そしてそれは私のマシン上のあなたのコードと同じ結果を生み出します-それは動作します、私は恐れています-しかしそれは結果を待つ計算時間はかかりません。

于 2012-12-01T21:04:48.190 に答える