原创Blog,转载请注明出处
blog.csdn.net/hello_hwc
前言:写Swfit代码的时候经常会遇到各种各样的Pointer,有时候真的很混乱,这里整理一下。
对应C语言的指针
作为返回值,变量和函数参数
对于类
UnsafePointer
UnsafePointer作为函数参数,可以接受如下类型
- nil 作为指向NULL的指针
- UnsafePointer,UnsafeMutablePointer,或者 AutoreleasingUnsafeMutablePointer,会自动进行转换
- 一个in-out 类型的变量,传入的是地址,这里的in-out指的就是取地址符号&
- [Type] Type类型的数组,传入的是数组开始的地址
举例:
unc testFunc(UnsafePointer<Int>){ }
var a = 10
var b:UnsafePointer<Int> = nil
var c = [1,2,3]
testFunc(nil)
testFunc(&a)
testFunc(b)
testFunc(c)
注意:
如果是UnsafePointer,那么可以接受任何类型的Type
UnsafeMutablePointer
UnsafeMutablePointer作为函数参数,可以传入
- nil 作为指向NULL的指针
- UnsafeMutablePointer类型的变量
- 一个in-out 类型的变量,传入的是地址,这里的in-out指的就是取地址符号&
- in-out [Type],传入的是数组开始的地址
举例
func testFunc(UnsafeMutablePointer<Int>){
}
var a = 10
var b:UnsafeMutablePointer<Int> = nil
var c = [1,2,3]
testFunc(nil)
testFunc(&a)
testFunc(b)
testFunc(&c)
AutoreleasingUnsafeMutablePointer
AutoreleasingUnsafeMutablePointer作为函数参数,可以传入
- nil 作为指向NULL的指针
- AutoreleasingUnsafeMutablePointer类型的变量
- in-out变量(这里的操作是在一个临时的缓冲区上,操作完成后拷贝到这个变量)
举例
func testFunc(x: AutoreleasingUnsafeMutablePointer<NSString?>) {
}
var a:NSString? = nil
var b:AutoreleasingUnsafeMutablePointer<NSString?> = nil
testFunc(nil)
testFunc(&a)
testFunc(b)