そーす

福岡在住。iOS/Androidアプリ, Webフロントエンドのエンジニアです。Swift, Kotlin, JavaScript, ReactNative

ProtocolExtensionで普通にweakは宣言できない

f:id:saburesan:20160427075732p:plain

protocol Hoge {}

extension Hoge {
  func post(){
    Api.send(success: {[weak self]  response in 
            //処理ー
    })
}

上記のように書くと

weak may only be applied to class and class-bound extension

コンパイルエラーが出ます。 protocolは構造体にも適用できるのでこのようなエラーが出ます。 なので、selfがクラスならいいので

extension Hoge where Self : AnyObject{
  func post(){
    Api.send(success: {[weak self]  response in 
            //処理ー
    })
}

で回避はできます。