Swift开发报错:Cannot convert value of type 'Maze.Type' to expected argument type 'Maze'
问题原因与解决方法
核心错误点
- 调用
MazeRat初始化方法时参数标签不匹配,要求的外部标签是maze不是self - 你传入的
Maze是类的类型对象,不是要求的Maze类实例,当前正在初始化的实例需要用关键字self指代
修正后可运行代码
class Maze { var rat : MazeRat init () { // 传入当前实例self,使用正确的参数标签maze rat = MazeRat(maze: self) } } class MazeRat{ init(maze : Maze) { // 此处补充你的初始化逻辑 } }
额外注意事项
如果后续你需要在MazeRat中存储对应的Maze实例,因为二者是互相引用的关系,需要给MazeRat中的Maze属性加上weak修饰符,避免循环引用导致内存泄漏,示例如下:
class MazeRat{ weak var belongMaze: Maze? init(maze : Maze) { self.belongMaze = maze } }
内容的提问来源于stack exchange,提问作者rkwright
相关产品推荐
相关产品推荐

