美文网首页
Swift指针使用(1)-UnsafePointer

Swift指针使用(1)-UnsafePointer

作者: gerrywanggang | 来源:发表于2022-02-28 17:56 被阅读0次

基本使用

var a = 5
let a_ptr = UnsafePointer<Int>.init(&a)
print(a_ptr.pointee)

运行结果:


16460372900508.jpg

UnsafePointer是不可变指针,也就是不能改变指针指向的地址的值。pointee是只读的,不能被赋值。
如下使用是错误的,编译报错。


16460373528956.jpg

注意,传入UnsafePointer的初始化的值用var修饰

在结构体中使用

struct Person {
    var name: String
    var age: Int
}

var person = Person.init(name: "xiaoli", age: 18)
let person_ptr = UnsafePointer<Person>.init(&person)
print(person_ptr.pointee)

运行结果:


16460375923103.jpg

在类中使用

在类中的使用和结构体完全相同.

class Person {
    var name: String
    var age: Int
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

var person = Person.init(name: "xiaoli", age: 18)
let person_ptr = UnsafePointer<Person>.init(&person)
person_ptr.pointee.age = 20
print(person_ptr.pointee.age)

不能够改变pointee, 但是类是引用类型,可以改变它的属性
运行结果


16460380986865.jpg

枚举、 泛型 和结构体使用一样

enum RequestResult {
    case success
    case failure
}

var r = RequestResult.success
let r_ptr = UnsafePointer<RequestResult>.init(&r)
print(r_ptr.pointee)

struct Animal<T> {
    var rawData: T
    func canMove() {
        print("can move!")
    }
}

var ani = Animal.init(rawData: 15)
let ani_ptr = UnsafePointer<Animal>.init(&ani)
print(ani_ptr.pointee.canMove())

运行结果


16460393596532.jpg

相关文章

  • Swift5.1 - 指针Pointer

    指针分类 使用swift提供指针类型: UnsafePointer UnsafeMutablePointer Un...

  • Swift指针使用(1)-UnsafePointer

    基本使用 运行结果: UnsafePointer是不可变指针,也就是不能改变指针指向的地址的值。pointee是只...

  • siwft指针

    swift 指针 UnsafePointer,UnsafeMutablePointer ,可变和不可变指针可以相互...

  • Swift中指针

    Swift中有4个指针类型:UnsafePointer、UnsafeMutablePointer、UnsafeRa...

  • swift基础_指针

    一.swift指针类型 swift认为指针是不安全的,所有指针的类的前缀为unsafe UnsafePointer...

  • Swift中的指针

    指针 Swift中指针分为两类: typed pointer:指定数据类型指针,UnsafePointer,...

  • [Swift] 指针UnsafePointer

    本文系学习Swift中的指针操作详解的整理 默认情况下Swift是内存安全的,苹果官方不鼓励我们直接操作内存。但是...

  • Swift进阶05:指针

    Swift中的指针分为两类 typed pointer 指定数据类型指针,即 UnsafePointer, ...

  • Swift指针

    Swift中的指针分为两类:① typed pointer 指定数据类型指针,即 UnsafePointer...

  • Swift-指针

    swift中的指针分为两类 typed pointer 指定数据类型指针,即 UnsafePointer,其...

网友评论

      本文标题:Swift指针使用(1)-UnsafePointer

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