2015-10-22 73 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