0

アラートメッセージダイアログを表示するshowMessageという関数があります。この関数は文字列をパラメータとして受け取り、この文字列をダイアログのメッセージとして表示します。最初は、文字列とそれに伴うスティングフォーマッターを渡す方法が必要でした。次のようなものです。

[self showMessageDialog:@"Hello %@", self.studentName];

ご覧のとおり、私が達成したいことです。そこで、関数のシグネチャを次のようにしました。

- (void) showMessageDialog:(NSString *)message, ...{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" 
                                                message:message 
                                               delegate:nil 
                                      cancelButtonTitle:@"OK"
                                      otherButtonTitles:nil];
[alert show];
[alert release];
}

これにより、関数呼び出し中に複数のフォーマッター(つまり、プレースホルダーに配置される引数)を渡すことができますが、メッセージにフォーマッター引数を表示できないものがありません。つまり、メッセージダイアログに常に「Hello%@」というメッセージが表示されます。

複数の引数を関数呼び出しに渡す方法を作ったようなものを見逃したことは知っていますが、それらの引数をプレースホルダーに配置する方法を作成していないと思います。

注:関数をNSLogのように機能させたいのですが、NSLogを呼び出して引数を渡す方法です。

4

1 に答える 1

1

あなたがやろうとしているのは、vararg関数を作成することです。それを行う方法については、このチュートリアルをご覧ください。

具体的には、私が理解している限り、変数引数リストをメソッドから変数引数リストを取得する別の関数に渡す方法にも興味があります(たとえば、から呼び出したい場合sprintfshowMessageDialog:。これはここで説明されています。実際、これは簡単に実行できます(たとえば、NSLogを使用)。

- (void) showMessageDialog:(NSString *)message, ... {

    va_list argp;

    va_start(argp, msg);
    NSLog(msg, argp);
    va_end(argp);

}
于 2012-07-28T11:34:54.813 に答える