原创Blog,转载请注明出处
blog.youkuaiyun.com/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)
本文是关于Swift中指针类型的详细梳理,包括UnsafePointer、UnsafeMutablePointer和AutoreleasingUnsafeMutablePointer。它们在函数参数中的使用规则被清晰阐述,例如作为返回值、变量、函数参数的情况,以及如何接受不同类型的数据,如nil、in-out变量和数组地址。此外,还特别提到不同指针类型的特性和用例。
5009

被折叠的 条评论
为什么被折叠?



