自動合成されたプロパティに依存する Mac + iOS ライブラリを作成しました。誰かに 32 ビットでコンパイルしてもらい、一連のコンパイラ警告を無視して、実行時に認識されないセレクターを取得してもらいました。
#error
たくさんのゲッターとセッターを実装しないとコードは機能しないので、代わりに a でそれらを停止したいと思います。
私はこれができると思った:
#if !__has_feature(objc_default_synthesize_properties)
#error This library requires the modern runtime and will not compile under 32-bit
#endif
しかし、それは効果がありません。
必要な結果を得るには、これを行う必要があります。
#if !__has_feature(objc_default_synthesize_properties) || defined(__i386__)
#error This library requires the modern runtime and will not compile under 32-bit
#endif
32 ビット Intel アーキテクチャ以外にも、古いバージョンの Mac OS など、問題を引き起こすインスタンスがあることはわかっています。
自動合成されたプロパティまたは最新のランタイムの可用性をチェックするためのより良いマクロはありますか?