在Swift
中,命名一个方法参数的时候,如果有多个特定类型的参数,可以直接使用可变参数(Variadic Parameters
)。官网文档链接
使用可变参数,其实很简单。就是在参数类型加上…
。比如Int…
。实际上,方法内部去调用该参数的话,Xcode
提示的是[Int]
。也就是一个Array
。这样也是大大方便。不用非得去声明一个[Int]
。
小二。。上代码~~~
|
|
再比如,可以封装一个UIAlertController
。如果觉得每次得写一大堆alert.addAction()
巴拉巴拉.
|
|
不过,可变参数无法用于Objective-C
中。
Objective-C
如果要使用可变参数。那么需要使用到va_list
等系列C函数
。
小二,继续上代码~~~
|
|
使用va_start
这个宏,会从value
的指针地址开始,一个一个的去取值。对于非指针
的话,那么就无法实现。至于 方法名后面的NS_REQUIRES_NIL_TERMINATION
,则是在方法调用的时候,加上nil
作为终结。因为如果没有nil
的话,那么也是会导致 不停的取值,于是,拿到未初始化的内存空间后,就导致崩溃啦。Boom….
写完这个方法后,只能感叹下Swift
封装的太好了。很方便的...
语法,加上高阶函数
的使用。貌似也不太算很公正的对比。(逃。
|
|
这样几行代码,就已经实现了上述Objective-C
写的方法了。
写这篇的根源,其实是在翻(gen)看(ben)Swift
(jiu)的(bu)官(zhi)方(dao)文(de)档(shuo)。于是看到可变参数这玩意了。后来想想,Objective-C
的NSArray
、UIAlertView
等,其实也是基于这样去写的。
算是又明白了一些。但愿不太迟。
哭瞎了。。。