aStoryboard.instantiateViewControllerWithIdentifie

2020-02-15 05:05发布

This is by far the strangest thing thats happened to me. So I have the code below in a unit test...

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

The code above is executed and viewController is nil, okay that can happen (it shouldn't be because both identifiers exist and files are linked to test targets) but yeah okay.

Here's the crazy part, when I add a breakpoint, step over the lines above and then type the following into lldb

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

viewController is allocated with memory. What how? If I manually add this in lldb then it has memory if I don't then it doesn't have memory and it's nil for the unit test.

Someone help me!

1条回答
虎瘦雄心在
2楼-- · 2020-02-15 05:46

"viewController is allocated with memory. What how? If I manually add this in lldb then it has memory if I don't then it doesn't have memory and it's nil for the unit test."

In Swift nil doesn't mean the same as Objective-C. It's not a pointer to NULL. It just mean absence of proper value. More information here: null / nil in swift language

So answering your question: it's fine to have memory for nil variable.

查看更多
登录 后发表回答