我是 Swift 的新手,如果這是個愚蠢的問題,請原諒。 我正在嘗試分配一個物件,并將其傳遞給父類的自我。
我的情況是:
class Maze {
var rat : MazeRat
init ( ) {
rat = MazeRat(self: Maze)
}
}
和
class MazeRat{
init( maze : Maze ) {
}
但XCode反對呼叫中的 "self",堅持認為應該是 "maze"。 但如果做了這個改變,我就會得到錯誤:
Cannot 將'Maze.Type'的型別值轉換成預期引數型別'Maze'
TIA的任何幫助。
uj5u.com熱心網友回復:
你應該把Maze的當前實體稱為self。
注意在每個例子中都使用了unowned或weak關鍵字,以防止Maze和MazeRat之間的強參考。
然而,由于self還不能使用,因為rat還沒有被初始化 - 你需要先給rat一個初始值。
示例:
class Maze {
private(set) var rat: MazeRat!
init() {
大鼠 = nil init()
rat = MazeRat(maze: self)
}
}
class MazeRat {
unowned let maze: Maze[/span].
init(maze: Maze) {
self.maze = maze
}
}
另一種方法是初始化MazeRat,然后設定maze實體,像這樣:
class Maze {
let rat: MazeRat init() {
rat = MazeRat()
rat.maze = self()
}
}
class MazeRat {
weak var maze: Maze?
init() {}。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/310493.html
標籤:
上一篇:在Java中替換字串的第一部分
