iOS va_list,va_start,va_end
来源:互联网 发布:面向过程的编程语言 编辑:程序博客网 时间:2024/05/03 04:16
- (id)initWithTitle:(NSString *)title
message:(NSString *)message
completionBlock:(void (^)(NSUInteger buttonIndex, EMAlertView *alertView))block
cancelButtonTitle:(NSString *)cancelButtonTitle
otherButtonTitles:(NSString *)otherButtonTitles, ... {
//#import <objc/runtime.h>头文件
//objc_setAssociatedObject需要四个参数:源对象,关键字,关联的对象和一个关联策略。
objc_setAssociatedObject(self, "blockCallback", [block copy], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
if (self = [self initWithTitle:title message:message delegate:self cancelButtonTitle:nil otherButtonTitles:nil])
{
if (cancelButtonTitle) {
[self addButtonWithTitle:cancelButtonTitle];
self.cancelButtonIndex = [self numberOfButtons] - 1;
}
id eachObject;
va_list argumentList;//va_list 是一个字符指针,可以理解为指向当前参数的一个指针,取参必须通过这个指针进行
if (otherButtonTitles) {
[self addButtonWithTitle:otherButtonTitles];
va_start(argumentList, otherButtonTitles);// 然后应该对argumentList进行初始化,让它指向可变参数表里面的第一个参数,这是通过 va_start 来实现的,第一个参数是argumentList本身,第二个参数是在变参表前面紧挨着的一个变量,即“...”之前的那个参数
while ((eachObject = va_arg(argumentList, id))) {//然后是获取参数,调用va_arg,它的第一个参数是argumentList,第二个参数是要获取的参数的指定类型,然后返回这个指定类型的值,并且把argumentList的位置指向变参表的下一个变量位置
[self addButtonWithTitle:eachObject];
}
va_end(argumentList);//置空argumentList//获取所有的参数之后,我们有必要将这个argumentList指针关掉,以免发生危险,方法是调用 va_end,它使输入的参数argumentList置为 NULL,应该养成获取完参数表之后关闭指针的习惯。说白了,就是让我们的程序具有健壮性。通常va_start和va_end是成对出现。
}
}
return self;
}
- iOS va_list,va_start,va_end
- ios 可变参数(va_list,va_start,va_end)
- iOS开发可变参数va_list、va_start、va_end
- va_list,va_start,va_end分析
- va_list,va_start,va_end分析
- va_list,va_start,va_end
- va_list,va_start,va_end,getpath
- va_list,va_start,va_end
- VA_LIST VA_START VA_ARG VA_END
- va_list、va_start、va_end
- va_list、va_start、va_arg、va_end
- va_start, va_end, va_list
- va_list va_start() va_end()
- va_list va_start va_arg va_end
- va_list、va_start、va_arg、va_end
- va_list, va_start, va_end, va_arg
- va_list、va_start、va_arg、va_end
- va_list & va_start & va_arg & va_end
- 解决 EF 启动慢问题 第一次访问慢
- UIModalPresentationFormSheet resizing view
- CRC算法详解(2)
- php---本地开发及测试环境搭建(Wamp)
- 希尔排序
- iOS va_list,va_start,va_end
- CRC32算法详细推导(3)
- java字符串
- iOS开发UI篇—程序启动原理和UIApplication
- 每天一道算法题(14)——N个降序数组,找到最大的K个数
- listview优化(中)
- Ubuntu14.04 LTS InfiniteBand 驱动安装与速度测试
- hibernate cp30 配置
- 修改mysql的数据内容路径