2016-08-15 47 views
0

這是迄今爲止發生在我身上的最奇怪的事情。所以我有一個單元測試代碼如下...aStoryboard.instantiateViewControllerWithIdentifier(「myid」)在lldb中返回零但不爲零

let aStoryboard = UIStoryboard(name: "myStoryboard", bundle: nil) 
let viewController = aStoryboard.instantiateViewControllerWithIdentifier("myViewController") as? CustomViewController 

上面的代碼執行和ViewController是零,沒關係,可以發生(它不應該,因爲這兩個標識碼和文件鏈接到測試目標),但是沒關係。

這裏的瘋狂的部分,當我添加斷點,步驟在上面的行,然後鍵入以下LLDB

viewController = aStoryboard.instantiateViewControllerWithIdentifier("myViewController") as? CustomViewController 

的viewController被分配有存儲器。怎麼樣?如果我手動添加這個在lldb中,那麼它有記憶,如果我沒有,那麼它沒有內存,它是零的單元測試。

有人幫我!

+0

您是否已將CustomController添加爲UnitTest目標的一部分? – Harsh

+0

是的,它被添加爲故事板膨脹 – harmeet07

回答

0

「的viewController分配內存。什麼怎麼辦?如果我手動添加這LLDB那麼它有記憶,如果我不那麼它沒有記憶,它是在單元測試爲零。」

在Swift中nil與Objective-C的意思不一樣。它不是一個指向NULL的指針。這只是意味着缺乏適當的價值。更多的信息在這裏:null/nil in swift language

所以回答你的問題:這是沒有記憶的無變量的罰款。

+0

問題不是它是零,對象可以是零這很好。如果我運行上面的代碼沒有斷點viewController是零,沒關係。但是,如果我沒有做任何代碼更改,添加了一個斷點。當程序執行上面的代碼時,這次viewController已經獲得了內存和值,這是奇怪的行爲。我沒有更改代碼,只是添加了一個斷點並附加了調試器。爲什麼在調試器連接時viewController有一個值? – harmeet07

+0

您能否張貼這個案例的截圖?這可能有助於我們澄清問題所在。 – Jurasic