AVFoundation を用いたカメラアプリを実装していて、参考にしていたサンプルコードに次のような NSZoneMalloc を用いてメモリ確保している箇所がありました。
bitmap = NSZoneMalloc(self.zone, width * height * 4);
これを ARC オンにしているソースに書いてビルドすると、
'zone' is unavailable: not available in automatic reference counting mode
こんな「ARCではzoneプロパティは使えませんよ」エラーが。
(※zoneはNSObjectのプロパティ)
他の部分はARC前提で書いてるので、このソースファイルを非ARCにしたくない場合、ここをどうにか書き換える必要があります。
対処方法
結論としては、malloc() を使って書き換えます。
mallocは引数に確保すべきサイズを渡すだけなので、上記の例を書き換えると次のようになります。
//bitmap = NSZoneMalloc(self.zone, width * height * 4); bitmap = malloc(width * height * 4);
解放する部分のコードも変わるので、ご注意ください。
//NSZoneFree(self.zone, bitmap); free(bitmap); bitmap = NULL;