在方法中药调用 self = self.init,报错信息是:Cannot assign to value:'self'is immutable
代码如下:
class Node:NSObject{
var parentID:Int?//父节点的id,如果为-1表示该节点为根节点
var nodeID:Int?//本节点的id
var name:NSString?//本节点的名称
var depth:Int?//本节点的深度
var expand:Bool?//该节点是否处于展开状态
//快速实例化该对象模型
func initWithParentID(parentID:Int,nodeID:Int,name:NSString,depth:Int,expand:Bool) -> Self{
self = self.init
return self
}
}
오류 메시지가 아주 명확하지 않나요? Self는 수정할 수 없습니다. - -
으아아아부모 클래스의 초기화 함수를 먼저 호출
근본 이유:
Swift의 초기화 체인은 OC와 다릅니다. OC는 NSObject에서 균일하게 상속되므로 OC의 super.init가 초기화 상위 클래스입니다.
그러나 Swift는 먼저 자신을 초기화한 다음 상위 클래스에서 상속된 속성을 초기화하기 위해 상속 체인 위로 올라가서 기본 클래스에 도달한 후 아래쪽으로 초기화 작업을 완료합니다.