再利用できるように設計されたクラスを作成していますが、コンパイル時に常に使用できるとは限らないクラスへの呼び出しを含めました。
具体的に言うと、私は Flurry 分析を使用しており、その呼び出しを含めたいのですが、このモジュールが含まれている可能性のあるすべてのプロジェクトが Flurry ライブラリにアクセスできるわけではありません。これらのコードのビットでコンパイルしないようにしたいだけです。状況。モジュールはソース コードとして配布されるため、コンパイル時にテストするだけで済みます。
これまでのところ、私は試しました:
if([Flurry class]){
[Flurry logEvent:@"Blah"];
}
これは「未定義の識別子の使用」に失敗します-ライブラリへの弱い参照がないため、フラリーはどこにも定義されていません
次に試してみました:
Class flurryClass = NSClassFromString(@"Flurry");
if(flurryClass){
[flurryClass logEvent:@"Blah"];
}
これは、「セレクター logEvent の既知のクラス メソッドがありません」として失敗します。
最初の方法は、弱いリンクが利用できない可能性のあるライブラリの弱いリンクに依存しているため、行き詰まっているようです! 現在定義がないクラスでクラスメソッドを呼び出しているため、コンパイラが文句を言うので、2番目のメソッドは失敗すると思いますか? 誰でも考えられる解決策はありますか?