Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 目标c将块转换为选择器_Iphone_C++_Objective C - Fatal编程技术网

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参数。

传入的方法如何?您能提供签名或代码示例吗?我可以只传入一个整数和一个布尔吗?