だから私はクラッシュログを理解する準備をしていて、クラッシュログを象徴していると思いますが、それでも理解できません。
Thread 0 Crashed:
0 libobjc.A.dylib 0x33c9a7f6 __sel_registerName
1 CoreFoundation 0x359934ea ___forwarding___
2 CoreFoundation 0x358eaf64 _CF_forwarding_prep_0 + 20
3 Texas42 0x0012e132 -[HelloWorldLayer closeBidPicker] + 750
4 Texas42 0x000e58f2 -[CCTimer update:] + 138
5 Texas42 0x000e77e4 -[CCScheduler tick:] + 464
6 Texas42 0x000f7e72 -[CCDirectorIOS drawScene] + 98
7 Texas42 0x000f8ff0 -[CCDirectorDisplayLink mainLoop:] + 16
8 QuartzCore 0x3360406c CA::Display::DisplayLink::dispatch(unsigned long long, unsigned long long)
9 QuartzCore 0x33603fc4 CA::Display::IOMFBDisplayLink::callback(__IOMobileFramebuffer*, unsigned long long, unsigned long long, unsigned long long, void*)
10 IOMobileFramebuffer 0x32dbefd4 IOMobileFramebufferVsyncNotifyFunc
11 IOKit 0x392a9446 IODispatchCalloutFromCFMessage
12 CoreFoundation 0x3595b5d8 __CFMachPortPerform
13 CoreFoundation 0x35966170 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__
14 CoreFoundation 0x35966112 __CFRunLoopDoSource1
15 CoreFoundation 0x35964f94 __CFRunLoopRun
16 CoreFoundation 0x358d7eb8 CFRunLoopRunSpecific
17 CoreFoundation 0x358d7d44 CFRunLoopRunInMode
18 GraphicsServices 0x35e142e6 GSEventRunModal
19 UIKit 0x36cb62fc UIApplicationMain
20 Texas42 0x000bba82 main + 70
21 Texas42 0x000bba34 start + 36
ユーザーの話によると、「closebidpicker」メソッドを呼び出すとアプリがクラッシュします。このクラッシュレポートは、この行で正確に何を教えてくれますか?750はラインオフセットを参照していると仮定しましたが、この方法は750ラインの長さではありません。私は完全に混乱しています。
このエラーを携帯電話やシミュレーターで再現することはできません。少なくともその線が何であるかを正確に特定できればいいのですが。
編集:
ccTouchEndedを使用してclosebidpickerを呼び出しています。
- (void) ccTouchEnded:(UITouch *)touches withEvent:(UIEvent *)event
{
if (bidpicker.startPage==bidpicker.endPage && bidpicker.visible==YES && bidpicker.boo_pickermoved==NO && bidpicker.wasTouching==YES
&& bidpicker.isWindow==YES && bidpicker.wasWindow==YES)
{
[self schedule: @selector(closeBidPicker) interval:0.];
}
}
- (void) closeBidPicker
//(id)sender
{
NSLog(@"Entering CloseBidPicker");
[self unscheduleAllSelectors];
[self reorderChild:_label z:-1];
int int_currentbid;
bidpicker.bidpickeractive=false;
bidpicker.visible=NO;
bidPickerMenu.visible=NO;
[self reorderChild:bidPickerMenu z:0];
int int_pageindex;
if(currentbid<=41){int_pageindex=45-currentbid;}
if(currentbid>41){int_pageindex=1;}
int_currentbid=currentbid;
int int_currentpage;
int int_bid;
NSString *str;
if ((int_player_counter==3 && currentbid>29)||int_player_counter!=3)
{
int_currentbid=currentbid;
}
else
{
int_currentbid=currentbid+1;
}
int int_pagevalues[int_pageindex];
int_currentpage=[[bidpicker valueForKey:@"currentPage"]intValue];
if (30>int_currentbid) {int_pagevalues[30-int_currentbid]=30;}
if (31>int_currentbid) {int_pagevalues[31-int_currentbid]=31;}
if (32>int_currentbid) {int_pagevalues[32-int_currentbid]=32;}
if (33>int_currentbid) {int_pagevalues[33-int_currentbid]=33;}
if (34>int_currentbid) {int_pagevalues[34-int_currentbid]=34;}
if (35>int_currentbid) {int_pagevalues[35-int_currentbid]=35;}
if (36>int_currentbid) {int_pagevalues[36-int_currentbid]=36;}
if (37>int_currentbid) {int_pagevalues[37-int_currentbid]=37;}
if (38>int_currentbid) {int_pagevalues[38-int_currentbid]=38;}
if (39>int_currentbid) {int_pagevalues[39-int_currentbid]=39;}
if (40>int_currentbid) {int_pagevalues[40-int_currentbid]=40;}
if (41>int_currentbid) {int_pagevalues[41-int_currentbid]=41;}
if (42>int_currentbid) {int_pagevalues[42-int_currentbid]=42;}
if (42>int_currentbid) {int_pagevalues[43-int_currentbid]=84;}
else if (42*2>int_currentbid) {int_pagevalues[1]=42*2;}
else if (42*3>int_currentbid) {int_pagevalues[1]=42*3;}
else if (42*4>int_currentbid) {int_pagevalues[1]=42*4;}
else if (42*5>int_currentbid) {int_pagevalues[1]=42*5;}
if (currentbid<42)
{
if ((int_player_counter==3 && currentbid>29)||int_player_counter!=3)
{
int_pagevalues[0]=0;
}
else
{
int_pagevalues[0]=30;
}
int_bid=int_pagevalues[int_currentpage];
}
else
{
int_bid=int_currentpage*(int_currentbid+42);
}
if (int_bid<42 && int_bid>0)
{
int_currenthighbidder=1;
str = [NSString stringWithFormat:@"%d!",int_bid];
[_player1actionlabel setString:str];
}
else if (int_bid==42){
int_currenthighbidder=1;
str = [NSString stringWithFormat:@"1 Mark!"];
[_player1actionlabel setString:str];
}
else if (int_bid==42*2){
int_currenthighbidder=1;
str = [NSString stringWithFormat:@"2 Marks!"];
[_player1actionlabel setString:str];
}
else if (int_bid==42*3){
int_currenthighbidder=1;
str = [NSString stringWithFormat:@"3 Marks!"];
NSLog(@"CloseBidPicker-14542");
[_player1actionlabel setString:str];
}
else if (int_bid==42*4){
int_currenthighbidder=1;
str = [NSString stringWithFormat:@"4 Marks!"];
[_player1actionlabel setString:str];
}
else if (int_bid==42*5){
int_currenthighbidder=1;
str = [NSString stringWithFormat:@"5 Marks!"];
[_player1actionlabel setString:str];
}
else if (int_bid==0)
{
str = @"Passes!";
[_player1actionlabel setString:str];
}
if (int_bid>currentbid)
{
int_player1bid=int_bid;
currentbid=int_player1bid;
}
//Code is failing when I call reorderChild, but only when computer bid 42 or more.
[self reorderChild:_player1actionlabel z:1];
[self reorderChild:_player1actionlabelbackground z:0];
int_player_counter=int_player_counter+1;
if (int_array_currentmove_player[int_player_counter]==2)
[self schedule: @selector(player2Bid) interval:1.5];
if (int_array_currentmove_player[int_player_counter]==3)
[self schedule: @selector(player3Bid) interval:1.5];
if (int_array_currentmove_player[int_player_counter]==4)
[self schedule: @selector(player4Bid) interval:1.5];
if (int_player_counter==4)
{
int_player_counter=0;
[self schedule: @selector(determineBidWinner) interval:1];
}
}
実際の方法については特別なことは何もありませんし、5ではなくiOS6でクラッシュする理由はわかりません。
私が理解していないのはこれです...
デバイス用に直接ビルドするとデバイスで正常に動作しますが、iTunesからベータ版をインストールするとクラッシュします。
問題の原因となっているコードを突き止めることができました。コメントアウトするとき
[self reorderChild:_player1actionlabel z:2];
[self reorderChild:_player1actionlabelbackground z:1];
正常に動作します。なぜそれがこれをしているのか私には全く分かりません。