次のように、2つのCCMenuItemImageオブジェクトをCCMenuItemToggleに追加しています。
CCMenuItemImage *soundEnabled = [CCMenuItemImage itemWithNormalImage:@"button_sound_enabled.png"
selectedImage:@"button_sound_enabled.png"];
soundEnabled.tag = kSoundEnabled;
CCMenuItemImage *soundDisabled = [CCMenuItemImage itemWithNormalImage:@"button_sound_disabled.png"
selectedImage:@"button_sound_disabled.png"];
soundDisabled .tag = kSoundDisabled;
CCMenuItemToggle *sound = [CCMenuItemToggle itemWithItems:[NSArray arrayWithObjects:soundEnabled,soundDisabled,nil] block:^(id sender) {
CCMenuItem *item= ((CCMenuItemToggle*).sender).selectedItem;
CCLog(@"item tag: %d",item.tag);
}];
kSoundEnabled
とkSoundDisabled
は値2と3の列挙アイテムです。作成後に各CCMenuItemImageのタグをログに記録すると、すべて問題ありません。しかし、それらをブロック内に記録すると、タグは-1061138431として表示されます。
また、ブロックの外でそれらをログに記録しようとすると、レイヤーのinitコードのさらに下で、それらが間違って表示され始めます。
誰かがここで問題が何であるか知っていますか?これはKobold2dARC対応プロジェクトですが、ここでARCが問題になる可能性がありますか?これはNSIntegerのような単純なデータ型を考慮しないと思いましたか?
確認するだけでいいのですが、ここで何が問題なのsender.selectedIndex = 0
かsender.selectedIndex = 1
を理解したいと思います。