2016-05-30 42 views
1

我使用符合SomeProtocol具有results財產爲什麼不斯威夫特編譯器檢測協議的屬性

let op : NSOperation, SomeProtocol = ... 

op.completionBlock = { 
    print(op.results) 
} 

我得到以下錯誤的的NSOperation:

Value of type 'NSOperation' has no member 'results' 

我知道我可以繼承NSOperation以獲得預期的行爲,但是我可以使用協議實現我想要的嗎?

回答

3

該代碼甚至不應該得到那麼遠...不像Objective-C,Swift不允許指定變量作爲具體類型和協議的組合。您只能聲明變量爲特定類型,特定協議或協議組合,例如,

let op : protocol<SomeProtocol, AnotherProtocol> = ... 

,但是目前還沒有辦法來聲明一個變量爲特定類型NSOperation,並符合協議SomeProtocol

+0

有趣的是,編譯器所接受的變量的定義。 因此,沒有辦法定義一個符合特定協議的特定類型的變量? 另外,協議是類型,不是嗎? https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html#//apple_ref/doc/uid/TP40014097-CH25-ID275 – GangstaGraham

+0

沒關係,現在只讀全部答案:P – GangstaGraham

+0

感謝您的幫助!將接受這個答案,只要我可以 – GangstaGraham