美文网首页
Swift 之获取变量指针地址

Swift 之获取变量指针地址

作者: willokyes | 来源:发表于2017-12-22 15:10 被阅读0次

print(Unmanaged.passUnretained(self.view).toOpaque())

Unmanaged 与 Objective-C 对象

由于 Objective-C 对象具有引用计数特性,单纯的指针可能无法满足使用需求,因此 Swift 引入了 Unmanaged 对象来管理引用计数。将一个对象声明为非托管有两个方法:

passRetained
passUnretained
如果这个非托管对象的使用全程,能够保障被封装对象一直存活,我们就可以使用 passUnretained 方法,对象的生命周期还归编译器管理。如果非托管对象使用周期超过了编译器认为的生命周期,比如超出作用域,编译器自动插入 release 的 ARC 语义,那么这个非托管对象就是一个野指针了,此时我们必须手动 retain 这个对象,也就是使用 passRetained 方法。一旦你手动 retain 了一个对象,就不要忘记 release 掉它,方法就是调用非托管对象的 release 方法,或者用 takeRetainedValue 取出封装的对象,并将其管理权交回 ARC。但注意,一定不要对一个用 passUnretained 构造的非托管对象调用 release 或者 takeRetainedValue,这会导致原来的对象被 release 掉,从而引发异常。

我们在自己的开发过程中基本也不会用到 Unmanaged 来管理对象生命周期和引用计数,但是如果要与 MRC 的库交互时,还是需要它的,Unmanaged 对象提供了转换为指针的方法。

相关文章

  • Swift 之获取变量指针地址

    Unmanaged 与 Objective-C 对象 由于 Objective-C 对象具有引用计数特性,单纯的指...

  • &运算符 与 *运算符

    & 运算符用作获取变量的地址。* 运算符通过变量的地址取值、赋值。 1.基本用法: 2.指向指针的指针:

  • iOS开发技能树之C语言-指针

    一、指针与指针变量 指针:就是地址,一个变量的指针就是这个变量的存储地址。 指针变量:用来存放指针(地址)的变量,...

  • Go之指针

    1. 指针的概念 指针是存储另一个变量的内存地址的变量 2. 获取变量的地址 Go语言的取地址符是&,放到一个变量...

  • c++快速入门6:指针与引用

    了解数据存储 address.cpp 用指针获取数值 指针存储其他变量的内存地址的变量。指针变量的声明方式与其他变...

  • swift底层探索 06 - 指针简单使用

    如果在 中需要获取 ,直接使用 都是无法获取地址的,只能 后才可以获取,如图一。 指针 Swift的指针分类两类:...

  • C语言关于指针与指针变量的总结

    指针 一个变量的内存地址称为该变量的“指针”。(指针 即 地址) 存放指针的变量称为"指针变量"。(指针变量 即 ...

  • C语言之指针[<重点>]

    指针:指针就是地址,地址就是指针。地址就是内存单元的编号。指针变量是存放地址的变量。指针和指针变量是不同的的概念。...

  • C语言特性(指针)

    指针 指针的概念 简单来说,变量的内存地址就是该变量的指针;而用于保存内存地址(指针)的变量就是指针变量 指针变量...

  • c语言的指针

    关于指针 指针就是地址,凡是出现“指针”的地方,都可以用“地址”代替,例如,变量的指针就是变量的地址,指针变量就是...

网友评论

      本文标题:Swift 之获取变量指针地址

      本文链接:https://www.haomeiwen.com/subject/woztgxtx.html