2016-11-05 18 views
2

私は理解の質問があります。私はDropbox Objective-CフレームワークをiOS Swiftアプリケーションで使いたいと思っています。
すでにフレームワークを正常にインポートし、ブリッジングヘッダーにインポート句を設定しました。
承認プロセスを実行することもできたので、フレームワークが機能すると思います。
それから私は、プロトコルとして宣言されているフレームワークのコンポーネントを使用しよう:SwiftクラスでのObjective-Cプロトコルの実装

class ViewController: UIViewController, DBRestClientDelegate { 
} 

私は、デリゲートのプロパティを座っloadMetadataメソッドと呼ばれ、対応するイベント機能を実装:

let dbRestClient = DBRestClient(DBSession.shared()) 
dbRestClient.delegate = self 
dbRestClient.loadMetadata("/") 
... 

func restClient(client: DBRestClient!, loadedMetadata metadata: DBMetadata!) { 
} 

何私は、そのプロトコルのすべてのメソッドを実装する必要はないように思えます。これは正しいです? Swiftの実装では、プロトコルの一部だけで十分ですか?
コンパイラはエラーを表示しないが、委譲メソッドは決して呼び出されないので、私は尋ねる。

答えて

1

一般に、Swiftでは、プロトコルのすべてのメソッドを実装する必要があります。 (オプションのプロトコルメソッドについては、この質問を参照してください:How to define optional methods in Swift protocol?

しかし、フレームワークはObjective-Cで書かれています。 Objective-Cはプロトコルのオプションメソッドをサポートしています。あなたは、必ずしもプロトコルで宣言されたすべてのメソッドを実装する必要はありません理由です

@protocol ProtocolName 
@required 
// list of required methods 
@optional 
// list of optional methods 
@end 

Source


。通常、最も重要なメソッドは@requiredとマークされています。オプションのメソッドを呼び出すときは、デリゲートがそれを実装しているかどうかを常に確認する必要があるからです。

関連する問題