2009-07-14 8 views
0

最近iPhoneアプリケーションを3.0 OSに対してコンパイルし始めました。iPhone 3.0 OSとのコンパイル時にUIActionSheetsに奇妙なエラーが発生しました

警告:3.0に対してコンパイルすると、次の警告もたらし、しかし2.2.1に対してコンパイル時にアプリがうまく働いた型「ID 」「UIActionSheetDelegate」 プロトコルに準拠していません を

これは、私のアプリケーションデリゲートクラスにある次のコードスニペットの2行目で発生します。

+ (PooClientAppDelegate*) instance; 
{ 
    UIApplication* app = [[UIApplication sharedApplication] delegate]; // warning occurs here 
    return (PooClientAppDelegate*)app; 
} 

このエラーは、以前のSDKのビルド時に表示されなかったため、どこから来たのかわかりません。

別の手掛かりや証拠として、アプリケーションを実行すると、アクションシートは表示されず、代わりにアクションシートのデフォルト選択が自動的に選択されます。私はこれが関連しているかどうかは分かりませんが、偶然のように聞こえるかもしれません。

ここで何が起こっていますか?

答えて

1

あなたはこの行に露骨なエラーを持っている:

UIApplication* app = [[UIApplication sharedApplication] delegate]; 

あなたは、のUIApplicationのインスタンスを取得し、そのデリゲートを要求し、その後のUIApplicationポインタにデリゲートを割り当てしようとしています。

それは次のようになります。

id<UIApplicationDelegate> app = [[UIApplication sharedApplication] delegate]; 

私はそれが正確にあなたのエラーを修正しますわからないんだけど、それはあなたがそれを持っている方法を修正していないのは間違いないだろう。 =)

+0

Duhh!それはそれを修正した素晴らしい!私のActionSheetのエラーはまったく異なるものでした。 警告には、UIActionSheetDelegateに言及されていますが、なぜそれが分かりますか? – aloo

+0

@aloo -delegateメソッドはIDを返し、UIApplicationが実装する最初のプロトコルはUIActionSheetDelegateです。 idはそのプロトコルを実装していないので、エラーが発生しています。 (それは推測ですが、私はかなり正しいと思います) –

+0

*私は正しいと確信しています。 (私はコメントを編集することができたら...) –

関連する問題