ARCでstructの中にObjective-Cインスタンスを入れると出るエラーの回避方法

(2013.05.28)修正

ARCではstructの中にObjective-Cのメンバを入れると怒られる。

これ、Objective-CコンパイラではなくObjective-C++コンパイラを使うようにする、つまりファイルの拡張子の.mを.mmにするとエラーが出なくなる。

C++コンパイラwith ARC だと、struct/class内のObjective-Cインスタンスなメンバーはdestructorで自動的にreleaseされるようになる。コンパイラの管理下に置けるからエラーにならないのね。しかも、メンバ変数にインスタンスを代入すると自動的にretainされる。retainな@property的な挙動になる模様。

なんと素晴らしいことでしょう。

ただARC化するには、これらのARCでのC++クラス/構造体内のObjective-Cメンバ変数の挙動にを踏まえた上で、これまで自前でretainやreleaseしてたところを検証していかなければならないので面倒っちょいは面倒っちょいが、まあ、structのままでARC化する道はあるってことで。