2015-10-22 144 views
2

我在swift中尝试泛型,在调试时遇到了一些不寻常的事情: 而不是打印出分配给变量的值,它只是打印一些不同的东西。继承人的示例代码:Swift调试泛型类型变量

class GenericExample<T: Comparable>{ 
    var someVar: T 

    init(myVar: T){ 
     someVar = myVar 
    } 
} 

let generics = GenericExample<Int>(myVar: 57) 
print(generics.someVar) 

结果是细(57),但运行调试程序时,如结合断点,该值被表示为像4301684792

任何提示,将不胜感激

+0

我忘了提及这个更新到Xcode 7.1后开始发生 – Doninelli

+0

没有任何理由应该隐式地解开'someVar'。它应该是可选的或非可选的。 – nhgrif

+0

哎哟,你说得对,谢谢指出。但调试器的问题仍然存在 – Doninelli

回答

1

不要在调试器中检查一个变量的值,该变量的值只有在变为或之后的行才会被赋值。该行尚未执行,因此您将看到一个随机值! (也就是说,不管在那个地址坐什么内存)。

只能检查较早的变量值!并且甚至不会在弹出的小工具提示中看到。仅查看变量窗格和lldb控制台。

+0

我把断点放在'print(generics.someVar)'行。这一点不是已经分配的价值吗? – Doninelli

+0

是否已分配_what_值? – matt

+0

不是_someVar_在'let generics = GenericExample (myVar:57)' – Doninelli