加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift-UnsafePointer, UnsafeMutablePointer,AutoreleasingUns

发布时间:2020-12-14 02:11:00 所属栏目:百科 来源:网络整理
导读:原创Blog,转载请注明出处 blog.csdn.net/hello_hwc 前言:写Swfit代码的时候经常会遇到各种各样的Pointer,有时候真的很混乱,这里整理一下。 对应C语言的指针 作为返回值,变量和函数参数 对于类 UnsafePointer UnsafePointer作为函数参数,可以接受如下类

原创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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读