为什么下面的代码要求我手动使用unsafe_pointer.deinitialize(count: 1)
来取消初始化实例?
如果我只使用unsafe_pointer.deallocate()
,那么这个实例在我的记忆中仍然是活的.那么,使用deallocate()
的目的是什么呢?
很抱歉,因为我是第一次try 学习MRC.
class Unsafe_Memory {
var name = "Hello World"
deinit {
print("\(type(of: self)) is deinited and deallocated")
}
}
let unsafe_pointer: UnsafeMutablePointer<Unsafe_Memory> = .allocate(capacity: 1)
unsafe_pointer.pointee = Unsafe_Memory()
dump(unsafe_pointer.pointee)
unsafe_pointer.pointee.name = "Changed"
dump(unsafe_pointer.pointee)
unsafe_pointer.deinitialize(count: 1)
unsafe_pointer.deallocate()