0

次のコードを使用して、menuitem を介して NSString を渡そうとしています

CCMenuItem * buyButton = [CCMenuItemLabel itemWithLabel:buyLabel target:self selector:@selector(buyItem:)];
buyButton.userData = (__bridge void *)((NSString*)(itemName));

次のセレクターに

-(void) buyItem:(CCMenuItemLabel*)sender {
   NSString * itemName = (NSString *)sender.userData;
     }

しかし、私はセレクターでクラッシュしています。私はアークを有効にして cocos2d を使用しているため、ユーザーデータ割り当てのブリッジです。(kobold2d)。何か案は?

4

2 に答える 2

0

これを試してください、その作業

 CCMenuItem * buyButton = [CCMenuItemLabel itemWithLabel:buyLabel target:self selector:@selector(buyItem:)];
 NSString *userDataString = [NSString stringWithFormat:@"kidnim"];            
 buyButton.userData = (__bridge void *)userDataString;

 CCMenu *menu = [CCMenu menuWithItems:buyButton, nil];
 menu.position = ccp(240, 160);
 [self addChild:menu];

そして buyItem 関数:

-(void) buyItem:(CCMenuItemLabel*)sender {
    NSString * itemName = (__bridge NSString*)sender.userData;
    printf("NSString: %s\n", [itemName UTF8String]);
}

そして、あなたはアウトプットを得るでしょう

NSString:kidnim
于 2013-07-09T13:57:50.267 に答える