【cocos2d-x】CC_SYNTHESIZE_RETAINでハマった件【C++】


この本に書かれていた
CC_SYNTHESIZE_RETAIN

他のサイトでも、これで使用した変数は自動的にretain()とrelease()を実施してくれるとかなんとか。
正直retain()とrelease()もはっきりわかってるわけでないのですが、
共通変数的な使い型が出来て、CC_SYNTHESIZE_RETAINって便利だなぁぐらいに思っておりました。

今回ハマったのは上の本にのってない、ui:PageViewをCC_SYNTHESIZE_RETAINで定義してしまい。
setとかgetとかイマイチわかってなかったので(プロパティってなに?)
宣言した変数にに対してこんな感じで書いてしまっていて

そしてこれが画面を表示したときにはエラーにならない

違う画面(クラス)に移動した際にアプリが落ちるだけ(しかも違うクラスのソースでエラーになる)
消去法で原因を特定したのですが、いまいち意味がわかってなかったので

CC_SYNTHESIZE_RETAINでググったところ

あとCCObjectを安全にセットできるCC_SYNTHESIZE_RETAINがある。
これはsetFunc()した場合
1)中で前まで所持してたものをrelease()し、続いて
2)新しくセットするものをretain()してくれる仕組みになってます。
cocos2dxで使いそうなマクロまとめ

・・・

良く見たら今まで使っていたLabelやらSpriteやらは全部Setで設定してたので
以下のように書き直したら動きました。

ですが、検証中に
.hファイルにて
CC_SYNTHESIZE_RETAINではなく

と書いたら動いたので、わざわざこれに書き換える必要性とか、、、
は今後勉強していこうと思います。