在方法中药调用 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 は最初に自身を初期化し、次に継承チェーンを上って親クラスから継承したプロパティを初期化し、基本クラスに到達した後、下方向の初期化操作を完了します。