Tag: 可变function

如何在运行时为Cocos2D CCMenu menuWithItems动态创建va_list?

我在CCMenu课上度过了一段难忘的时光。 要使用此类创建菜单,它会强制您调用名为initWithItems的方法,该方法采用va_list。 我需要在运行时生成这个列表,并且我读到创建一个C数组并传递它可以像va_list一样起作用,只是它失败了。 我在va_list中有一个我想要的NSArray项目,这些项目是CCMenuItem的SUBCLASS,这是menuWithItems期望在va_list中的类。 如果你在编译时硬编码这个列表,它工作正常,但我动态创建这个列表的尝试不起作用。 这有什么问题? MenuItemButton是一个CCMenuItem子类。 NSArray *menuItems = [self getMenuItemsArray]; // Returns an NSArray of MenuItemButtons MenuItemButton *argList = (MenuItemButton *)malloc( sizeof(MenuItemButton *) * [menuItems count] ); [menuItems getObjects:(id *)argList]; CCMenuAdvanced* menu = [CCMenuAdvanced menuWithItems:argList]; 这在运行时崩溃,BAD_ACCESS。 我知道va_list应该是null终止的,我不知道在调用getObjects后我的代码是否就是这种情况,或者甚至是问题。