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

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

Antworte allen (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是先初始化自己,然后在沿着继承链条向上,初始化继承自父类的属性,到达基类后,然后在向下完成初始化操作。

      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage
      Über uns Haftungsausschluss Sitemap
      Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!