TCo*_*ool 4 variables parameters objective-c variadic cocos2d-iphone
我在向函数传递可变数量的参数时遇到问题:
-(void)addCharacterToScene:(NSString *)name withFrames:(CCSpriteFrame*)frames,... {
va_list args;
va_start(args, frames);
id arg = va_arg(args,CCSpriteFrame*);
int i=1;
while (arg) {
NSString *frame_name = [NSString stringWithFormat:@"%@_%i",name,i];
NSLog(@"%@ \n%@",frame_name, arg);
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFrame:arg name:frame_name];
arg = va_arg(args,CCSpriteFrame*);
i++;
}
va_end(args);
}
Run Code Online (Sandbox Code Playgroud)
问题是该函数跳过了第一个参数.我对函数的调用如下所示:
[self addCharacterToScene:@"wiz" withFrames:wizardFrame1,wizardFrame2,wizardFrame3,nil];
Run Code Online (Sandbox Code Playgroud)
我可以在第一个位置传递一个虚拟对象并给出所需的结果,但必须有一个更好的解决方案.谢谢!
而不是第一次这样做:
id arg = va_arg(args,CCSpriteFrame*);
Run Code Online (Sandbox Code Playgroud)
做:
id arg = frames;
Run Code Online (Sandbox Code Playgroud)
A 在函数中指定的参数后面va_list开始.所以如果你想处理那个论点,你必须自己开始.va_start
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |