我是靠谱客的博主 优美黄蜂,最近开发中收集的这篇文章主要介绍自定义格式化字符串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_starva_argva_endva 是可变参数 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, ...)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部