栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Swift,字符串和内存地址

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Swift,字符串和内存地址

func unsafeAddressOf(object: AnyObject) -> UnsafePointer

接受

AnyObject
参数,即 class 的实例。它将指针返回到用于引用的对象的存储
object

addressOf()
不能与 struct 变量一起使用:

struct Foo { }var f = Foo()let a = unsafeAddressOf(f)// error: cannot invoke 'unsafeAddressOf' with an argument list of type '(Foo)'

String
struct
但是
NSString
当传递给需要对象的函数时,它将自动桥接到。所以

let word0 = "hello"let p1 = unsafeAddressOf(word0)

实际执行

let p1 = unsafeAddressOf(word0 as NSString)

您获得的不是

word0
变量的地址,而是指向桥接
NSString
对象的内存位置的指针。

似乎无法

NSString
对在相同的Swift字符串上重复执行此桥接是否返回相同的对象(或更笼统地说,相同的Foundation对象)做出任何假设。在操场上,甚至

let word0 = "hello"let p1 = unsafeAddressOf(word0)let p2 = unsafeAddressOf(word0)let p3 = unsafeAddressOf(word0)

返回三个不同的地址(但在已编译项目中为相同的地址)。在Array和Dictionary之间的不同桥接中,进行了相同的观察(对于数组和字典)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368313.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号