我正在通过用Swift编写的TDD书来学习如何使用该语言。我注意到,在代码库中,某些对象不需要分配内存以便使用。例如,我们创建了一个隐式解包的可选命名sut,其中我明白为该对象分配内存,但实际上并未创建它。但是,在名为setup的方法中,我们创建并使用了UIStoryboard对象。我很困惑,为什么这是可能的,为什么不需要为UIStoryboard对象分配内存。下面是代码:为什么Swift中的类初始化期间不需要所有对象?
import XCTest
@testable import ToDo
class ItemListViewControllerTests: XCTestCase {
var sut: ItemListViewController!
override func setUp() {
super.setUp()
let storyboard = UIStoryboard.init(name: "Main", bundle: nil)
sut = storyboard.instantiateViewController(withIdentifier: "ItemListViewController") as! ItemListViewController
_ = sut.view
}
override func tearDown() {
super.tearDown()
}
func test_TableViewIsNotNil_AfterViewDidLoad() {
XCTAssertNotNil(sut.tableView)
}
func test_loadingView_LoadsTableViewAndSetsTableViewDataSource(){
XCTAssertTrue(sut.tableView.dataSource is ItemListDataProvider)
}
}
您将'sut'分配给'storyboard.insta的结果ntiateViewController(withIdentifier:“ItemListViewController”)as! ItemListViewController'。你不需要自己分配任何内存,因为'instantiateViewController(withIdentifier :))'为你做了。 – Alexander