Paradigm Shift Design

ISHITOYA Kentaro's blog.

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


ってわけで、メモでした。



せんでん

1タップで写真共有tottepost
カメラのついたiPad/iPhoneで撮った写真を、その場でFacebook/Mixi/DropboxなどのサービスにアップロードできるtottepostというiOSアプリを開発しています!詳しくは、iTunes App Storeをご覧ください。


ご購入はこちら!
1タップで写真共有 - tottepost - ISHITOYA Kentaro