在閱讀Apple的ARC指南後,我慢慢嘗試瞭解保留週期,但不清楚的是swift的類型推斷需要可選問號或強制展開當在一個類的全局範圍內推斷一個變量時感嘆號。Swift Type推理需要問號或感嘆號
例如:
import XCTest
@testable import PassionProject
class ItemManagerTests: XCTestCase {
var sut: ItemManager!
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
sut = ItemManager()
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func tests_ToDoCount_Is_InitiallyZero() {
XCTAssertEqual(sut.toDoCount, 0)
}
func tests_DoneCount_Is_InitiallyZero(){
XCTAssertEqual(sut.doneCount, 0)
}
}
如果我離開了下一行的問號或感嘆號,它拋出約沒有初始化類錯誤:
var sut: ItemManager
我的問題是,是不是隻是簡單地說這個變量是這種類型的推斷呢?如果是這樣,如果我們沒有給它一個初始值,爲什麼Xcode會將它視爲一個屬性?第二,爲什麼如果我們從不設置它的值,強制解開推斷類型編譯?
如果需要的話,這裏是我們使用作爲一個例子對象的代碼,並感謝您提前得到一個更好的把握:
import Foundation
class ItemManager {
let toDoCount = 0
let doneCount = 0
}
如果您正在分配,請不要明確說明類型。讓推理完成它的工作:'var sut = ItemManager()' – Alexander