Swift中的指针

1、UnsafePointer

  • Swift本身从设计上来说是一门非常安全的语言,在Swift的思想中,所有的引用或者变量的类型都是确定并且正确对应它们的实际类型的,你应该无法进行任意的类型转化,也不能直接通过指针做出一些出格的事情。这种安全性在日常的程序开发中对于避免不必要的bug,以及迅速而且稳定的找出代码错误是非常有帮助的。但是凡事都有两面性,在高安全的同时,Swfit也相应的丧失了部分的灵活性。UnsafePointer就是Swift中专门针对指针的转换。
  • 对于其他的C中基础类型,在Swift中对应的类型都遵循统一的命名规则:在前面加上一个字母C并将原来的第一个字母大写:比如int,bool和char的对应类型分别是CInt,CBool和CChar。
    C API const Type *对应Swift API中的UnsafePointer
    C API Type *对应Swift API中的UnsafeMutablePointer
  • 在C中,对某个指针进行取值使用的是*,而在Swift中我们可以使用memory属性来读取相应内存中存储的内容。
  • 通过传入指针地址进行方法调用的时候就都比较相似了,都是在前面加上&符号。
  • Swift中为我们提供了一个强制转换的方法unsafeBitCast。unsafeBitCast会将第一个参数的内容按照第二个参数的类型进行转换,而不去关心实际是不是可行,这也正是UnsafePointer的不安全所在,因为我们不必遵守类型转换的检查,而拥有了在指针层面直接操作内存的机会。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容