簡體   English   中英

Cocos2d MenuItemLabel使用塊會導致SIGABRT

[英]Cocos2d MenuItemLabel using Blocks causes SIGABRT

在Cocos2D中,使用塊創建菜單操作會在該場景的init方法中導致SIGABRT錯誤:

 CCLabelTTF *label = [CCLabelTTF labelWithString:@"test" fontName:@"Times" fontSize:12];
 CCMenuItemLabel *toCauseCrash = [CCMenuItemLabel itemWithLabel:label block:^(id sender) {
  NSLog(@"Blocks work?");
}];

嘗試了最新的Cocos2D,一無所獲。 該論壇帖子承諾(a)很快將提供一個修復程序,並對“ BuildSettings-iOS.xcconfig”文件(據我所知尚不存在)進行編輯。

(1)有誰知道如何修復Cocos2D以允許菜單中的塊?

(2)誰知道上面的帖子在談論什么xcconfig文件,或者如何找到它? (那是Kobold2d的東西)

編輯:這是在OTHER_LINKER_FLAGS中設置“ -force_load $(BUILT_PRODUCTS_DIR)/”后嘗試的代碼示例:

id blockAction = [CCCallBlock actionWithBlock:^{
  NSLog(@"Blocks action");
}];

void (^reusableBlock)(id sender) = ^(id sender) {
  NSLog(@"Reusable block");
};
// SIGABRT:
CCMenuItemLabel *menuItem = [CCMenuItemLabel itemWithLabel:myLabel block:blockAction];
// SIGABRT:
CCMenuItemLabel *menuItem = [CCMenuItemLabel itemWithLabel:myLabel block:reusableBlock];

現在看來,答案是:即使在cocos2d lib上使用-force_load時,塊也是有問題的。 對於有一個不同的答案,我可以接受這一問題。

論壇帖子涉及Kobold2D 但是,即使沒有任何.xcconfig文件,如果將cocos2d構建到靜態庫中,也會發生相同的問題。 在這種情況下,您必須-force_load您的cocos2d lib才能使用CCMenu塊,方法是將其添加到“構建設置”中的“其他鏈接器標志”部分。

當然,要注意的另一個問題是您的“部署目標”必須設置為iOS 4.0或更高版本。 區塊在iOS 3.x中不可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM