• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Objective-C中使用不定参数个数的方法调用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Objective-C中,定义并使用带有不定参数个数的对象方法与C函数类似,规则上也要求不定参数列表中必须至少要有一个形参,然后参数列表的最后跟省略号表示不定参数。省略号不能放在参数当中部分,只能放在末尾。

比如:

@interface MyObject : NSObject

- (void)method:(id)param1 param2:(NSNumber*)param2, ...;

@end


@implementation MyObject
- (void)method:(id)param1 param2:(NSNumber*)param2, ...
{
    va_list ap;
    
    // 定位不定形参列表(省略号部分)之前的一个形参
    va_start(ap, param2);
    
    NSMutableArray<NSNumber*> *arr = [NSMutableArray arrayWithCapacity:10];
    // 如果param2参数本身为空,则不去解析不定形参部分
    if(param2 != nil)
    {
        [arr addObject:param2];
        
        // 这里假定:如果param2不为空,则后续一定跟着至少一个不定实参
        NSNumber *num;

        // 开始迭代
        do
        {
            num = va_arg(ap, NSNumber*);
            if(num != nil)
                [arr addObject:num];
        }
        while(num != nil);
    }
    
    // 迭代结束
    va_end(ap);
    
    int sum = 0;
    for(NSNumber* num in arr)
        sum += num.intValue;
    
    NSLog(@"param1 is: %@, and the sum is: %d", param1, sum);
}

@end

// 以下是调用:
    MyObject *numObj = [[MyObject alloc] init];
    [numObj method:@"Hello" param2:nil];
    [numObj method:@"Hi" param2:@100, nil];
    [numObj method:@"Bye" param2:@200, @100, nil];
    [numObj release];

以上代码片段清晰地给出了不定参数方法的定义与调用方法。具体实现规则,各位可以根据自己当前需求来定。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Objective-C中小怪兽的逻辑发布时间:2022-07-12
下一篇:
ObjectiveC基础教程发布时间:2022-07-12
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap