【发布时间】:2016-05-04 13:03:47
【问题描述】:
我将从一个示例设置开始。
class Parent {
let parentProperty = 1
}
class Child : Parent {
let childProperty = 2
}
class Test {
func testMethod<T : Parent>(data: T) {
// (llbd) print data
}
}
let child = Child()
let test = Test()
// (lldb) print child
test.testMethod(child)
我在标有注释“(lldb) print ...”的地方暂停了执行,并在 Xcode 的调试器控制台中执行了“print child/data”命令。
上述命令的输出如下所示。
// 打印孩子
(RingRingTests.Child) $R0 = 0x00007fcb886459a0 {
RingRingTests.Parent = {
parentProperty = 1
}
childProperty = 2
}
//打印数据
(RingRingTests.Child) $R1 = 0x0000000115a93818 {
RingRingTests.Parent = {
parentProperty = 140512143366480
}
childProperty = 4294967299
}
child 和 data 变量显然指向内存中的不同位置。 (因为数据指向一些无效的内存)
这似乎是通用函数的最基本设置是快速的,但它失败了。
我想我在做一些根本错误的事情。有人可以指出我正确的方向吗?谢谢。
【问题讨论】:
-
使用
unsafeAddressOf、data和child为我打印相同的内存地址。