ARC / 非ARCソースファイルのコンパイル時に設定が適合しない場合、エラーを出す方法
PhotoSubmitterというライブラリを作っています。
このライブラリ自体はARCなのです。
でも、サードパーティライブラリがARCだったり非ARCだったりして、"-fno-objc-arc"フラグを設定すべきファイルがどれなのかわからなくなってしまっていました。
SO先生に聞くと、コンパイラフラグでコンパイル時に正しく設定されているかを確かめる方法を教えてくれました。以下のコードのいずれかをどこかに埋め込むと、コンパイル時にエラーを出せます。
非ARCコードの場合
#if __has_feature(objc_arc) #error This file must be compiled with Non-ARC. Use -fno-objc_arc flag (or convert project to Non-ARC) #endif
ARCコードの場合
#if ! __has_feature(objc_arc) #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). #endif
で、これをproject.pbxprojに書いてある情報を元にソースコードに埋め込むコードをかいて設定しました。
Objective-c ARC/Non-ARC compiler flag adder for tottepost — Gist
ってわけで、メモでした。