2012-03-19 29 views
0

在cocos2d使用塊來創建一個菜單操作的那場戲的init方法將導致SIGABRT錯誤:的Cocos2D MenuItemLabel使用blocks使SIGABRT

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

嘗試最新的cocos2d的,什麼都沒有。 This forum post承諾(一)儘快修復,並編輯了「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]; 
+0

我有菜單項中的塊出現問題,導致父項被釋放時無法正確釋放項目。我的建議是現在不要在MenuItems中使用塊,並堅持使用目標:選擇器: – Ultrakorne 2012-03-19 15:58:52

+0

@Ultrakorne是的,這就是我所描述的問題。我希望能夠解決這個問題。與此同時,是的,我正在使用該解決方法。 – buildsucceeded 2012-03-21 11:17:52

回答

0

似乎現在的答案是:即使在cocos2d庫上使用了-force_load,塊也是有問題的。我會非常高興的一天有一個不同的答案,我可以接受這個問題。

0

在論壇上發帖指Kobold2D。但是,如果您將cocos2d構建到靜態庫中,但同樣的問題也適用,但不會有任何.xcconfig文件。在這種情況下,你將不得不-force_load your cocos2d lib爲了加入這個在構建設置中的「其它鏈接器標記」部分使用CCMenu塊。

另一個問題需要注意的是當然,你的部署目標必須設置爲iOS 4.0或更高。塊在iOS 3.x中不可用。

+0

感謝this--嘗試過,但仍然得到SIGABRT每當我使用塊。 (編輯帖子以提供代碼,因爲它在這裏不會正確格式化。) – buildsucceeded 2012-03-21 11:16:44