2011-01-27 11 views
0

私は私のアプリデリゲートがプロトコル複数のプロトコル

アプリデリゲートのヘッダファイル内

<UIApplicationDelegate, SKPaymentTransactionObserver>

(すなわちアプリデリゲートインタフェース)に準拠していることを宣言しています。

まで何

warning: type 'id <UIApplicationDelegate>' does not conform to the 'SKPaymentTransactionObserver' protocol

コンパイラは、というのが私のコード内の多くの場所で私に語りましたか?

+0

デリゲートがクラス宣言と変数宣言の両方の2つのプロトコルに準拠していると宣言しましたか? –

+0

@Bavarious:アプリケーションデリゲートインターフェイスのみ。 – SK9

+0

トランザクションオブザーバを追加する場所にコードを掲載します。 –

答えて

-1
あなたApplicationDelegateは、例えば、必要な代表団の一部が欠けているように思わ

:デリゲートメソッドSKPaymentTransactionObserverが必要とする

- (void)applicationWillResignActive:(UIApplication *)application 

チェック、および

また、あなたのAppDelegate.mに追加するには、オーバーチェックSKPaymentTransactionObserver Protocol Reference

+0

@ WrightCS:あなたの投稿をありがとう。私はSKPaymentを他のプロトコルに置き換えても同じ問題を抱えています。これはこれではありません。 – SK9

2

あなたはおそらく[[SKPaymentQueue defaultQueue] addTransactionObserver:[[UIApplication sharedApplication] delegate]]のようなことをしています。 -[UIApplication delegate]id<UIApplicationDelegate>を返すと宣言されているため、コンパイラは返されたオブジェクトがSKPaymentTransactionObserverプロトコルを実装することを知る方法がありません。代理人クラスとして静的に型指定された変数に代理人を割り当てて、そのを呼び出すメソッドに渡して、コンパイラが満足するようにしてください。

+0

私の考えは正確です。 –

+0

@Bavarious、@Chuck:変数宣言でキャストを追加すると、これを修正するようです。 – SK9

関連する問題