2011-01-27 42 views
0

我宣佈,我的應用程序的委託符合協議多協議

<UIApplicationDelegate, SKPaymentTransactionObserver>

在應用程序委託頭文件

(即應用程序委託接口)。

編譯器告訴我在很多地方在我的代碼是:

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

這是怎麼回事?

+0

你是否聲明過你的委託符合類聲明和變量聲明中的兩個協議(或者你訪問變量)? – 2011-01-27 02:45:01

+0

@Bavarious:只在應用程序委託界面中。 – SK9 2011-01-27 02:49:11

+0

發佈添加事務觀察者的代碼。 – 2011-01-27 03:05:17

回答

-1

你ApplicationDelegate似乎缺少一些必要的代表,例如:

- (void)applicationWillResignActive:(UIApplication *)application 

檢查什麼委託方法SKPaymentTransactionObserver需要,並將它們添加到您的AppDelegate.m

此外,檢查過SKPaymentTransactionObserver Protocol Reference

2

您可能正在做類似[[SKPaymentQueue defaultQueue] addTransactionObserver:[[UIApplication sharedApplication] delegate]]。由於-[UIApplication delegate]被聲明爲返回id<UIApplicationDelegate>,編譯器無法知道返回的對象是否會實現SKPaymentTransactionObserver協議。嘗試將代理分配給靜態類型爲您的代理類的變量,並將傳遞給您嘗試調用的方法,編譯器應該很高興。