2017-06-12 3 views
0

理由を次のようにエラーなしでコンパイルんではない:所有されていない自己は、コンパイラエラーを発しますが、民間のvarの初期化と

public class MyContainingViewModel { 

    public var myViewModel: MyViewModel? { 
     return privateMyViewModel 
    } 

    lazy private var privateMyStatusViewModel: MyViewModel? = { [unowned self] in 
     ... 
    } 

が、エラーで次の結果:

public class MyContainingProtocol { 
    public var quotedStatusViewModel: T1StatusViewModel? = { [unowned self] in 

エラーの詳細:

MyViewModel.swift: 'unowned' may only be applied to class and class-bound protocol 
types, not '(MyContainingViewModel) ->() -> MyContainingViewModel' 

答えて

0

主な問題はquotedStatusViewModelがあるということですインスタンス変数とselfはまだ存在しないため、ブロック内で使用することはできません。最初のインスタンスでは、lazyなので、これは実際に呼び出されたときにselfが周りになるため、コンパイルは正常です。

関連する問題