ios - swift新手请教,我在swift中调用self.init,报错了,怎么回事?
伊谢尔伦
伊谢尔伦 2017-04-18 09:47:55
0
2
515

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

}

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(2)
小葫芦

報錯不是說的挺明白的嗎? Self是不可修改的 - -
先呼叫父類別的初始化函數

  init(parentID: Int, nodeID: Int, name: NSString, depth: Int, expand:Bool) {
    super.init()
    self.parentID = parentID
    self.nodeID = nodeID
    self.name = name
    self.depth = depth
    self.expand = expand
  }
左手右手慢动作

根本原因:
swift的初始化鏈和OC不同,OC統一繼承自NSObject,所以OC中super.init是初始化父類別。
但是swift是先初始化自己,然後在沿著繼承鏈條向上,初始化繼承自父類別的屬性,到達基底類別後,然後在向下完成初始化操作。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板