Iphone 目标c将块转换为选择器
单击菜单时将调用以下块Iphone 目标c将块转换为选择器,iphone,c++,objective-c,Iphone,C++,Objective C,单击菜单时将调用以下块 CCMenuItem* iconItem = [CCMenuItemSprite itemFromNormalSprite:icon selectedSprite:icon2 block:^(id sender) { [self buttonClickedWithUnlocked:unlocke
CCMenuItem* iconItem = [CCMenuItemSprite itemFromNormalSprite:icon
selectedSprite:icon2
block:^(id sender) {
[self buttonClickedWithUnlocked:unlocked world:world];
}];
我可以将参数传递给块内的方法
<>但是现在我正在翻译Obj-C到C++。因此,不支持块。我需要使用选择器,如:
CCMenuItem* iconItem =
CCMenuItemSprite::itemFromNormalSprite(icon, icon2, this,
menu_selector(SomeClass::buttonClickedWithUnlockedWorld(unlocked, w)));
但我无法传入参数(选择器不支持)
那么还有其他方法吗
如果你不使用C++,Obj-C版本的选择器是:
CCMenuItem* iconItem = [CCMenuItemSprite itemFromNormalSprite:icon
selectedSprite:icon2
target: self
selector: @selector(buttonClickedWithUnlocked)
}];
但是,我仍然不能将任何参数传递给@selector。
还有别的办法吗 您的obj-c版本应该是
选择器:@selector(buttonClickedWithUnlocked::)
而不是选择器:@selector(buttonClickedWithUnlocked)
(注意::
)。所以对于C++版本,你需要创建一些东西,比如<代码> [TopePrPultScopult:ObjultObj:Obj1,Obj:Obj2] < /C>
因此,在Obj-C中,它可能看起来像这样:
CCMenuItem* iconItem = [CCMenuItemSprite itemFromNormalSprite:icon
selectedSprite:icon2
target: self
selector: @selector(buttonClickedWithUnlocked::)
param1: [NSNumber numberWithInt:unlocked]
param2: [NSNumber numberWithBool:w]
}];
和
按钮ICKEDWITHUNLOCKED
必须定义为具有两个NSNumber参数。传入的方法如何?您能提供签名或代码示例吗?我可以只传入一个整数和一个布尔吗?