猿问

swift新手请教,我在swift中调用self.init,报错了,怎么回事?

在方法中药调用 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

    

}


慕码人2483693
浏览 1570回答 2
2回答

动漫人物

根本原因:swift的初始化链条和OC不同,OC统一继承自NSObject,所以OC中super.init是初始化父类。但是swift是先初始化自己,然后在沿着继承链条向上,初始化继承自父类的属性,到达基类后,然后在向下完成初始化操作。
随时随地看视频慕课网APP
我要回答