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

您要做的是构建一个可变参数函数。请查看本教程以了解如何执行此操作。

具体来说,据我了解,您还将对如何将变量参数列表从您的方法传递到另一个采用变量参数列表的函数感兴趣(假设您想sprintf从您的showMessageDialog:. 这是解释here。实际上,这很容易做到(例如,使用 NSLog):

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

    va_list argp;

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

}
于 2012-07-28T11:34:54.813 回答