kid*_*nim 0 cocos2d-iphone automatic-ref-counting kobold2d
我正在尝试使用以下代码通过menuitem传递NSString
CCMenuItem * buyButton = [CCMenuItemLabel itemWithLabel:buyLabel target:self selector:@selector(buyItem:)];
buyButton.userData = (__bridge void *)((NSString*)(itemName));
Run Code Online (Sandbox Code Playgroud)
到以下选择器
-(void) buyItem:(CCMenuItemLabel*)sender {
NSString * itemName = (NSString *)sender.userData;
}
Run Code Online (Sandbox Code Playgroud)
但我在选择器中崩溃了.我正在使用启用了arc的cocos2d,因此是userdata分配中的桥接器.(kobold2d).有任何想法吗?
你的实际崩溃问题是这样的:
NSString * itemName = (NSString *)sender.userData;
Run Code Online (Sandbox Code Playgroud)
看看它,你在这里投了什么?右:你铸造sender到NSString*,然后你发送发送者(在CCMenuItemLabel)一userData消息.BAM!
拯救的括号:
NSString * itemName = (__bridge NSString *)(sender.userData);
Run Code Online (Sandbox Code Playgroud)
另外,为什么有userObject时会让它过于复杂?
buyButton.userObject = itemName;
Run Code Online (Sandbox Code Playgroud)
userObject是一种id类型,不需要桥接转换,userData是void*并且需要桥接转换
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |