0

iOS SDK のバージョン 5.0 以降で使用できるメソッドを使用しています。もちろん、呼び出す前に、クラスにメソッドがあるかどうかを確認しています (つまり、実行中の iOS のバージョンを確認しています)。

if ([UITabBar instancesRespondToSelector:@selector(setSelectedImageTintColor:)]) {
    [myTabBarController.tabBar setSelectedImageTintColor :TINT_COLOR_IMAGES];
}

これはうまくいきます。ただし、削除したいという警告が表示されますが、それを処理できるものは見つかりませんでした。警告は次のとおりです。

warning: ‘UITabBar’ may not respond to ‘-setSelectedImageTintColor:’
warning: (Messages without a matching method signature
warning: will be assumed to return ‘id’ and accept
warning: ‘...’ as arguments.)

プロジェクトのすべての警告を削除したくないので (オプション -Wall を削除します)、この #pragma を試しました:

#pragma GCC diagnostic ignored "-Wundeclared-selector"
[...] my method containing call to setSelectedImageTintColor
#pragma GCC diagnostic warning "-Wundeclared-selector"

しかし、「Wundeclared-selector」を「Wall」に置き換えても、これは機能しませんでした。つまり、#pragma は効果がなく、makefile で何かを有効にする必要があるかもしれません。

何か案が ?

ありがとう

4

1 に答える 1

1

警告を削除するには、これを変更します

 [myTabBarController.tabBar setSelectedImageTintColor :TINT_COLOR_IMAGES];

 [myTabBarController.tabBar performSelector:@selector(setSelectedImageTintColor:) withObject:TINT_COLOR_IMAGES];

これにより、警告が削除されます

于 2012-06-07T15:39:49.373 に答える