2016-08-15 5 views
0

これは私に起こった最も奇妙なことです。だから私は、ユニットテストでは以下のコード...aStoryboard.instantiateViewControllerWithIdentifier( "myid")は、nldを返しますが、lldbにはnilを返しません。

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

上記のコードが実行されているとのViewControllerは、それが起こることができる大丈夫、nilで両方の識別子が存在し、ファイルがテストにリンクされているので(それはすべきではありませんターゲット)が、大丈夫です。

は、ここで私は上記の線の上にブレークポイント、手順を追加し、ときにlldb

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

のViewControllerは、メモリに割り当てられているに、次のように入力し、狂気の部分です。どのように?私は手動でこれをlldbに追加すると、メモリがなくてもメモリがなくなり、単体テストではメモリがなくなります。

誰か助けてください!

+0

UnitContestターゲットの一部としてCustomControllerを追加しましたか? – Harsh

+0

はい、それはストーリーボードとして盛り上がりました。 – harmeet07

答えて

0

"viewControllerにはメモリが割り当てられています。どうすればいいですか?手動でlldbに追加すると、メモリがなくてもメモリがありません。メモリがなく、ユニットテストではnilです。

In Swift nilはObjective-Cと同じ意味ではありません。 NULLへのポインタではありません。適切な価値がないということだけです。詳細はこちら:null/nil in swift language

質問に答える:いいえ変数のメモリを持つことは問題ありません。

+0

問題はそれがゼロではない、オブジェクトはゼロである可能性があります。私がブレークポイントなしで上記のコードを実行した場合、viewControllerはnilですが、それは問題ありません。しかし、コードを変更しなかった場合は、ブレークポイントを追加しました。プログラムが上記のコードを実行すると、今度はviewControllerの周りにメモリと値があります。これは奇妙な動作です。コードを変更せずに、単にブレークポイントを追加してデバッガをアタッチしました。デバッガが接続されていると、なぜviewControllerに値がありますか? – harmeet07

+0

このケースのスクリーンショットを投稿してください。問題が何であるかを明確にするのに役立つかもしれません。 – Jurasic

関連する問題