CocoaPodsでMKNetworkKitを入れようとしたら詰まった話
MKNetWorkKitという便利なライブラリがあるらしいけど、CocoaPodsでいざインストールしてCommand-Rすると
どうやら、
#if NEEDS_DISPATCH_RETAIN_RELEASE @property (nonatomic, assign) dispatch_queue_t reachabilitySerialQueue; #else @property (nonatomic, strong) dispatch_queue_t reachabilitySerialQueue; #endif
の部分でエラーが起きているらしい。ただiOS 6.0以降だと dispatch_queue_t に対してもARCが有効なはずなのになんでだろうと思っていたら、
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 60000 // iOS 6.0 or later #define NEEDS_DISPATCH_RETAIN_RELEASE 0 #else // iOS 5.X or earlier #define NEEDS_DISPATCH_RETAIN_RELEASE 1 #endif
という感じでARCが有効かどうかしらべてるけど、dispatch_queue_t 自体は OS_OBJECT_USE_OBJC が1であるかどうかで ARC に対応させるか決めてるらしい(<os/object.h> あたり)。
ということは OS_OBJECT_USE_OBJC が 0 になってるということだけど、どうしてだろうと思ったら CocoaPods が気配りを効かせていたせいだった。
GCDを利用しているライブラリで、GCDのオブジェクトに対してARCが適用されることに対する修正をまだしていないライブラリもそれなりに多い(と思う)から、-DOS_OBJECT_USE_OBJC を標準で付加してるんだと思う。
podspecの方で変えられるようなのでPull Requestを投げるならそっちのほうだろうなあ。
というわけで -DOS_OBJECT_USE_OBJC=1にしたら解決。