【发布时间】:2017-09-20 18:44:11
【问题描述】:
Objective-c 有一个指向指针的概念。如果您取消引用第一个指针,您可以访问原始指针
void makeFive(int *n) {
*n = 5;
}
int n = 0;
makeFive(&n);
// n is now 5
当它被桥接到 Swift 3 时,它变成了一个 UnsafeMutablePointer
func makeFive(_ n: UnsafeMutablePointer<Int>) {
n.memory = 5
}
var n: Int = 0
makeFive(&n)
// n is now 5
但是,从 Swift 4 开始,这种行为已经改变,并且 memory 属性不再可用。
makeFive(_:) 函数的 swift 4 等效项是什么?
更新 感谢 Hamish,我现在知道“内存”已重命名为指针。
【问题讨论】:
-
从 Swift 3 开始,它是
.pointee;但不要在这里使用UnsafeMutablePointer。如果您需要改变调用方变量,请使用inout(这不应该那么频繁)。 -
感谢您的更正,这确实是罕见的!否则我会在堆栈溢出中找到它。我不知道改名。我主要使用 UnsafeMutablePointer 来实现 Objective-C 兼容性,因为“inout”是一个 swift 唯一的功能。
标签: swift swift4 unsafemutablepointer