自定义类型NSLog格式的格式化字符串方法,如下所示:
/// 格式字符串
NSString *NSStringFromFormat(NSString *format, ...)
{
va_list list;
va_start(list, format);
NSString *string = [[NSString alloc] initWithFormat:format arguments:list];
va_end(list);
return string;
}
实现自定义格式化字符串时,一是不确定参数类型,二是不确定数量的参数。
在定义时,变参函数需要用到C语言中关于变参的一组宏:va_star、va_arg、va_end,va 是可变参数 variable argument 的意思。
1、声明一个va_list类型的变量,如 ap,这个变量是指向参数的指针。
2、用va_start宏初始化变量 ap,这个宏的第二个参数是可变参数的前一个固定参数。这就使得我们实现的3、函数在可变参数前,必须至少包含一个固定参数。
4、用va_arg返回可变的参数,这个宏的第二个参数是你要返回的参数的类型。
5、用va_end宏结束可变参数的获取。
va 宏原理
C语言的函数参数是以栈这种数据结构来存取的,在函数参数列表中,从右至左依次入栈存入参数的内存地址,我们运行va_start(ap, v)后,ap就指向第一个可变参数在栈的地址,然后我们用va_arg(ap, t)取得类型t的可变参数值。之后 ap 就会指向这个参数后的地址。最后通过va_end使 ap 不再指向栈。
最后
以上就是优美黄蜂最近收集整理的关于自定义格式化字符串NSStringFromFormat(NSString *format, ...)的全部内容,更多相关自定义格式化字符串NSStringFromFormat(NSString内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复