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

在方法中药调用 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 は変更できません - -
最初に親クラスの初期化関数を呼び出します

リーリー
いいねを押す +0
左手右手慢动作

根本的な理由:
Swift の初期化チェーンは OC とは異なります。OC は NSObject から一律に継承するため、OC の super.init が初期化の親クラスになります。
しかし、Swift は最初に自身を初期化し、次に継承チェーンを上って親クラスから継承したプロパティを初期化し、基本クラスに到達した後、下方向の初期化操作を完了します。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート