代码分析之va_list及UIAlertController的封装

va_list是在C语言中解决变参问题的一组宏,长用来出来不定参数

在iOS中也可使用,使用场景一般是参数为如下

(1)va_start宏

        获取可变参数列表的第一个参数的地址va_start(ap, param),ap是类型为va_list的指针,param是可变参数最左边的参数

(2)va_arg宏

        获取可变参数当前的参数,返回指定类型并将指针指向下一个参数va_arg(ap, type),ap是类型为va_list的指针,type是当前参数的类型

(3)va_end宏

        清空va_list可变参数列表va_end(ap),ap是类型为va_list的指针


来一个例子,使用va_list对UIAlertController进行封装

(1)写一个block,供用户传入,处理消息关闭事件

typedef void (^MDFUIAlertViewOnDismiss)(NSInteger index);

(2)封装的方法名,展示一个消息框,关闭时执行回调,变长参数,0~N个字符串加一个结束符(nil或block),block类型为MDFUIAlertViewOnDismiss

代码分析之va_list及UIAlertController的封装_第1张图片
代码分析之va_list及UIAlertController的封装_第2张图片

注意到有个推出模态控制器,为了外面的使用,我们使用栈顶的视图控制器来推

代码分析之va_list及UIAlertController的封装_第3张图片

使用的时候如下

你可能感兴趣的:(代码分析之va_list及UIAlertController的封装)