关闭

iOS 处理方法中的可变参数

标签: ios可变参数方法
660人阅读 评论(0) 收藏 举报
分类:

## iOS 处理方法中的可变参数

      最近写了一个自定义的对话框的demo,想模仿系统的UIAlertView的实现方式,对处理可变参数的时候,遇到了小问题,于是谷歌了一下,写下了处理问题的方法,记录下来,以备后需。


代码实现

- (instancetype)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ... {
    if (self = [super init]) {
        self.title = title;
        self.delegate = delegate;
        self.frame = CYScreen.bounds;
        // 获取可变参数的值
        if (![self isBlankString:cancelButtonTitle]) {
            [self.buttonTitles addObject:cancelButtonTitle];
        }
        NSString *str;
        va_list list;
        if(otherButtonTitles)
        {
            // 1.取得第一个参数的值
            CYLog(@"%@", otherButtonTitles);
            [self.buttonTitles addObject:otherButtonTitles];
            // 2.从第2个参数开始,依此取得所有参数的值
            va_start(list, otherButtonTitles);
            while ((str = va_arg(list, NSString *))){
                CYLog(@"%@", str);
                [self.buttonTitles addObject:str];
            }
            va_end(list);
        }
        CYLog(@"%@", self.buttonTitles);
    }
    return self;
}

方法调用

- (IBAction)showDialog {
    CYAlertView *alert = [[CYAlertView alloc]initWithTitle:@"我的提示" message:@"消息正文" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", @"XXX", @"YYY", nil];
    alert.containerView = [self createDemoView];
    [alert show];
}

打印结果

2015-07-06 15:54:26.422 CYCustomAlertView[358:42937] 确定
2015-07-06 15:54:26.424 CYCustomAlertView[358:42937] XXX
2015-07-06 15:54:26.424 CYCustomAlertView[358:42937] YYY
2015-07-06 15:54:26.425 CYCustomAlertView[358:42937] (
    取消,
    确定,
    XXX,
    YYY,
)
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

iOS:在objective-c 使用可变参数

objective-c中已有的一些可变参数方法:
  • houseq
  • houseq
  • 2014-08-25 15:39
  • 6612

Java可变参数方法重载时要注意的几个问题

转载自:http://www.blogjava.net/rongxh7/archive/2010/04/18/318698.html JDK1.5引进了方法的可变参数,受到许多开发人员的青睐。有了这...
  • gwpJava
  • gwpJava
  • 2015-06-19 09:57
  • 2241

Java中可变长参数方法的定义和使用

java中 在Java5 中提供了变长参数(varargs),也就是在方法定义中可以使用个数不确定的参数,对于同一方法可以使用不同个数的参数调用,例如print("hello");print("...
  • u012179540
  • u012179540
  • 2014-10-20 20:10
  • 5489

iOS 使用可变参数va_list, 定义一个方法

- (void)inWithColumns:(NSString *)firstColumnName, ... { NSMutableArray *arrays = [NSMutableArra...
  • vinzry
  • vinzry
  • 2016-01-26 16:38
  • 1888

IOS 方法带可变参数写法及解释

原文地址 在编写一些通用类的时候经常会遇到可变参数的处理。就好比 :UIAlertView的 init方法中的otherButtonTitles:(NSString *)ot...
  • q562679764
  • q562679764
  • 2016-04-02 14:27
  • 210

ios开发-Object-C可变参数函数

简介 一个可变参数函数是指一个函数拥有不定的参数,即为一个函数可接收多个参数。有时我们会遇到一些算术问题需要用到,比如是计算传入参数的总和,字符串的连接或是其它操作过程,我们在 OC 里也经常使用,...
  • hatsuna
  • hatsuna
  • 2015-07-27 10:51
  • 264

iOS 可变参数宏__VA_ARGS__

在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如: #define pr_debug(fmt,arg...) \ printk(KERN_DEBUG fmt,##arg) ...
  • u010856537
  • u010856537
  • 2015-10-19 11:00
  • 545

iOS:在objective-c 使用可变参数

objective-c中已有的一些可变参数方法: [objc] view plain copy   FOUNDATION_EXPORT  void NSLog...
  • zrhloveswallow
  • zrhloveswallow
  • 2016-05-27 19:19
  • 339

iOS自定义警告框 OC 如何写可变参数的函数

自定义警报框先看看OC中的一些用法,一般是在初始化数组的时候, 也可以像下面deotherButtonTitles一样 ,输入一组字符串,以nil结尾,然后输入的字符串就会变成数组了,UIAlert...
  • squallmouse
  • squallmouse
  • 2015-08-25 22:12
  • 382

ios开发Objective-C可变参数函数

首先作为一个coder 很多时候会遇到自己不能解决的问题需要上网查资料,因为没有学过多少c语言,所以这方面只能请求网上的前辈,然后就看了关于 “Objective-C可变参数函数”的文章,可惜网上...
  • think12
  • think12
  • 2014-01-20 16:01
  • 9380
    个人资料
    • 访问:150571次
    • 积分:2421
    • 等级:
    • 排名:第17631名
    • 原创:101篇
    • 转载:14篇
    • 译文:0篇
    • 评论:55条
    文章分类
    最新评论