
这个变量是否仍然被创建并存储在内存中,或者被编译器一起忽略,好像它是一行被注释掉的代码?
例如:
func test_TodoItem_TakesTitle(){ let firstTodoItem = TodoItem(Title: "First Instance Title") _ = TodoItem(Title: "First TodoItem instance") XCTAssertEqual(firstTodoItem.Title,"First Instance Title") } 以下代码行是创建并存储在内存中还是被忽略:
_ = TodoItem(Title: "First TodoItem instance")
希望这个问题有意义,因为我想要注意Xcode中每个内存的使用方式.
解决方法 此测试显示对象在对象超出范围时创建然后销毁:class TodoItem { var Title = "" init(Title: String) { self.Title = Title } deinit { print("deinit \(Title)") }}func test() { print("test") _ = TodoItem(Title: "First") _ = TodoItem(Title: "Second") print("end test")}func calltest() { print("calling test()...") test() print("back from test()")}calltest() 输出:
06001
扩展测试:
func test() { print("test") _ = TodoItem(Title: "Item 1") for i in 2...4 { _ = TodoItem(Title: "Item \(i)") } _ = TodoItem(Title: "Item 5") print("end test")} 06003
请注意,第2,第3和第4项已取消初始化,因为它们在每个循环中超出范围.当test()完成时,第1项和第5项在超出范围时被取消初始化.
在应用程序内
正如德米特里·普洛特尼科夫在his answer年指出的那样,上述情况仅适用于斯威夫特游乐场.在应用程序中,结果是:
06004
这告诉我们:
>创建对象.>他们立即被释放.
总结以上是内存溢出为你收集整理的在Swift中为Underscore分配变量全部内容,希望文章能够帮你解决在Swift中为Underscore分配变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)