冷门_可变参数方法

冷门_可变参数方法

OC 中用的比较少,重载接口用的比较少(个人)。即使有重载也可以用 id 来代替。


- (Student *) newStudentWithParams:(Student *)originalS, ... {
	NSString *returnS;

	va_list params; // 存放参数地址
	va_start(params, originalS); // 初始化 params,当前 params 指向第一个参数 originalS
	if (originalS) {
    	for (;;) { // 遍历参数的死循环
        	// 这里你可以对不同情况下的参数做不同的处理
        	Student *s = va_arg(params, Student *); // 通过 params 来遍历参数,  va_arg 的第二个参数用来计算参数数组中每个参数所占用的地址长度, 方便 params 进行遍历
        	if (!s) { // 当参数遍历结束后 va_arg 会返回 NULL
            	break;
        	}
    	}
	}
	va_end(params); // 置空 params
	// 这里可以根据不同的情况作不同的处理 

	if (returnS == nil) {
    	return originalS;
	}
	return returnS;
}

资料:
va_list
va_start 函数介绍

posted @ 2017-04-20 12:01  上水的花  阅读(174)  评论(0)    收藏  举报