5

appDelegateを設定するために次のようにインターフェイスを宣言するNSXMLParserDelegateと、[[UIApplicationsharedApplication]デリゲート]を使用している他のビューからいくつかの警告が表示されます。

@interface AppDelegate : UIResponder <UIApplicationDelegate, NSXMLParserDelegate>

警告:互換性のないタイプ'id'の式で'AppDelegate*__strong'を初期化しています

ただし、削除すると、xmlParserの自己設定により、別の警告が表示されます。

@interface AppDelegate : UIResponder <UIApplicationDelegate>

警告:互換性のないタイプ'id'のパラメーターに'AppDelegate *const__strong'を送信しています

の上

    xmlParser = [[NSXMLParser alloc] initWithData:receivedData];
    [xmlParser setDelegate:self];

両方を削除する方法は?ありがとうございました

4

1 に答える 1

18

AppDelegateを公開するインターフェイスにするべきではありません。これにより、すべてのコード間に非常に緊密な結合が作成されます。他のコード(AppDelegate以外)でNSXMLParserDelegateが必要な場合は、別のクラスを作成する必要があります。

AppDelegateは、独自の目的のために代理人である必要があるようです。AppDelegate.mファイルでクラス拡張子を作成することにより、インターフェイスを「プライベートに」実装できます。

@interface AppDelegate() <NSXMLParserDelegate>
@end

上記を実行すると、ここで受け取った警告が削除されます。

[xmlParser setDelegate:self];
于 2012-06-21T21:59:50.130 に答える