我在谷歌上搜索过,知道了如何使用变量参数.但我想把变量参数传递给另一个方法.我有错误.怎么做?

-(void) aMethod:(NSString *) a, ... {
  [self anotherMethod:a]; 
  // i m doing this but getting error. how to pass complete vararg to anotherMethod
}

推荐答案

AfAIKObjvEC(就像C和C++)不提供一个语法,允许你直接记住的内容.

通常的解决方法是创建一个函数的两个版本.一个可以直接使用...另一个由其他函数调用,以va_列表的形式传递参数.

..
[obj aMethod:@"test this %d parameter", 1337);
[obj anotherMethod:@"test that %d parameter", 666);
..

-(void) aMethod:(NSString *)a, ... 
{
    va_list ap;
    va_start(ap, a);

    [self anotherMethod:a withParameters:ap]; 

    va_end(ap);
}

-(void) anotherMethod:(NSString *)a, ...
{
    va_list ap;
    va_start(ap, a);

    [self anotherMethod:a withParameters:ap]; 

    va_end(ap);
}

-(void) anotherMethod:(NSString *)a withParameters:(va_list)valist 
{
    NSLog([[[NSString alloc] initWithFormat:a arguments:valist] autorelease]);
}

Objective-c相关问答推荐

按住自定义 UIButton 时更改深灰色突出显示的 colored颜色 ?

如何可靠地检测 iOS 9 上是否连接了外部键盘?

为什么 UITableViewCell Select 时所有背景都消失了?

pathForResource 返回 null

在 Objective-C 类中混合 C 函数

静态和动态单元格的 UITableView 混合?

setFont 已弃用?

调用了dismissViewControllerAnimated,但没有解除ViewController

重复符号 _OBJC_METACLASS_$_ClassName

Objective-C 方法中的静态变量是否跨实例共享?

iOS 7 - viewDidLoad 和 viewDidAppear 之间的区别

MKMapView MKPointAnnotation 点击​​事件

滚动后检测 UITableView 中的当前顶部单元格

在 Cocoa 中你更喜欢 NSInteger 还是 int,为什么?

我可以设置 `UILabel` 的 `attributedText` 属性吗

将 NSData 字节转换为 NSString?

在我滚动之前,数据不会加载到 UITableView 中

如何以编程方式在 UINavigationController 中按下返回按钮

以编程方式设置 UIView 的自动调整大小掩码?

UITableViewCell 选中行的文字 colored颜色 变化