我是靠谱客的博主 优美黄蜂,最近开发中收集的这篇文章主要介绍自定义格式化字符串NSStringFromFormat(NSString *format, ...),觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
自定义类型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 *format, ...)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复