其實這種初始化有點像一個類幫另一個類初始化了,小的那個類被大的引用著。china?.CapitalCity.Country這樣調用有點奇怪。
2019-01-17
樓下說沒有關系其實還是有關系的,當雙方初始化的完成都需要對方的時候,而且雙方屬性都是let和不能為空,這時候就需要用到unowned加上!屬性來解決了。
2019-01-17
先使用一個協議封裝起來一些必須完成這個委托任務必須要實現的方法,如游戲的規則和tableview的行數。
創建一個類,里面有個delegate的屬性,這個delegate必須遵守協議。類內部使用delegate實現任務內部的邏輯,如游戲如何進行和tableview如何通過代理的函數去布局,這些邏輯被委托方都不需要知道。
當某個類需要成為委托方的時候,把這個delegate賦值給這個類,并在里面實現協議的方法,如tableView的屬性或游戲規則,這就完成了委托的任務了。
創建一個類,里面有個delegate的屬性,這個delegate必須遵守協議。類內部使用delegate實現任務內部的邏輯,如游戲如何進行和tableview如何通過代理的函數去布局,這些邏輯被委托方都不需要知道。
當某個類需要成為委托方的時候,把這個delegate賦值給這個類,并在里面實現協議的方法,如tableView的屬性或游戲規則,這就完成了委托的任務了。
2019-01-17
為什么Struct中函數改變屬性要加mutating呢! 因為struct是屬于值類型的, 當新值傳入 它需要拷貝一個新的副本去防止副本的修改影響到原屬性,所以在覆蓋原屬性的操作中系統不知道這個新的副本要放在那里,所以加上mutating系統就知道這是一個覆蓋操作 不應該開一個新的副本
2019-01-15