iOS 发大招 otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 写法 编写通用类的时候关于可变参数的处理...
开始 我 以为 这个 alertView 里面 ...的写法 应该 是一个 普通的数组 然 并没有
分享一篇好文
http://www.tekuba.net/program/290/
IOS实现传递不定长的多个参数的方法是使用va_list。va_list是C语言提供的处理变长参数的一种方法。在调用的时候要在参数结尾的时候加nil。va_list的使用需要注意:
(1)首先在函数里定义va_list型的变量,这个变量是指向参数的指针;
(2)然后用va_start初始化刚定义的va_list变量;
(3)然后用va_arg返回可变的参数,va_arg的第二个参数是你要返回的参数的类型.如果函数有多个可变参数的,依次调用va_arg获取各个参数;
(4)最后用va_end宏结束可变参数的获取。
参考示例:
+ (void)functionName:(NSObject*)string, ... { va_list args; va_start(args, string); if (string) { NSString *otherString; while ((otherString = va_arg(args, NSString *))) { //依次取得所有参数 } } va_end(args); }
说明:
va_list args:
//定义一个指向个数可变的参数列表指针;
va_start(args,string)://string为第一个参数,也就是最右边的已知参数,这里就是获取第一个可选参数的地址.使参数列表指针指向函数参数列表中的第一个可选参数,函数参数列表中参数在内存中的顺序与函数声明时的顺序是一致的。
va_arg(args,NSString):返回参数列表中指针所指的参数,返回类型为NSString,并使参数指针指向参数列表中下一个参数。
a_end(args):清空参数列表,并置参数指针args无效。
在实际使用中 要明确注意 这点:
otherButtonTiles 应该是真正的第一个对象参数, va_list_args 获取到的 是 其他的剩下的 参数 .
上实战:
转载于:https://www.cnblogs.com/someonelikeyou/p/5019652.html
iOS 发大招 otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 写法 编写通用类的时候关于可变参数的处理...相关推荐
- iOS 11开发教程(七)编写第一个iOS11代码Hello,World
iOS 11开发教程(七)编写第一个iOS11代码Hello,World 代码就是用来实现某一特定的功能,而用计算机语言编写的命令序列的集合.现在就来通过代码在文本框中实现显示"Hello, ...
- iOS 11开发教程(二)编写第一个iOS 11应用
iOS 11开发教程(二)编写第一个iOS 11应用 编写第一个iOS 11应用 本节将以一个iOS 11应用程序为例,为开发者讲解如何使用Xcode 9.0去创建项目,以及iOS模拟器的一些功能.编 ...
- iOS关键字之nullable、nonnull、null_resettable、_Null_unspecified的区别
nullable.nonnull.null_resettable._Null_unspecified是iOS9.0出现的新的修饰关键词,下面我们来研究一下它们之间的区别. 一 共同点 1.可以进行代码 ...
- iOS之深入解析少见却神奇的NSProxy类的多种使用
一.NSProxy 简介 NSProxy 是一个实现了 NSObject 协议类似于 NSObject 的抽象基类,是根类,与 NSObject 类似: NS_ROOT_CLASS @interfac ...
- 一劳永逸,iOS 网页视图控制器通用类封装
原文链接:http://www.jianshu.com/p/553424763585 随着 H5 的发展,在 iOS 开发中,网页视图的使用率逐渐提升,为了增加代码封装度.减轻开发负担,因此通常会对网 ...
- 【IOS 开发】Objective - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射
一. Objective-C 对象简单处理 1. 包装类 (1) 包装类简介 NSValue 和 NSNumber : -- 通用包装类 NSValue : NSValue 包装单个 short, i ...
- Struts2 之配置文件编写,动作类(01)
学习路线: 1.struts入门(配置文件编写,动作类的编写及其访问方式) 2.封装数据和访问Servlet的api 3.ognl和值栈 4.拦截器和注解开发 struts2基本概念 Struts2是 ...
- 编写矩形类 计算矩形面积
编写矩形类 计算矩形面积 public class juxing {int a;int b; juxing(int a,int b){System.out.println("矩形面积s=&q ...
- C++编写Config类读取配置文件
老外写的一段代码,在Server中编写这个类读取配置文件比较实用 C++代码 //Config.h #pragma once #include <string> #include &l ...
最新文章
- 这个为生信学习打造的开源Linux教程真香!!!
- FD.io/VPP — GRE over IPSec
- C#中的System.Net.Sockets内部实现原理
- 电脑技巧:微软电脑管家测试版发布,赶快来体验一下吧!
- 2017.9.25 社交网络 思考记录
- window mysql 服务安装
- 正在成为史上最全分类 Android 开源大全
- 详解Python类定义中的各种方法
- Leetcode杯 第三题解答(动态规划)
- dpkg: error: dpkg status database is locked by another process 解决方法
- mysql 的hash和b tree_mysql索引hash索引和b-tree索引的区别
- 推荐系统:基于内容的推荐
- Netty实战——Channel、EventLoop和ChannelFuture详解
- 韩顺平--Java坦克大战
- BGI-College生信入门系列——3、数据库
- 《假装情侣匿名聊天室2.0》源码及搭建教程
- OSChina 周四乱弹 —— 针对热门上姐弟恋的解答
- Java 与 区块链技术_java区块链技术有哪些主要的特点和应用
- 学PS平面设计前,你需要先了解这些
- Oracle语句详解