2012-06-15 2 views
1

저는 iPhone SDK를 처음 사용합니다. 콘솔의 모든 배열을 인쇄하고 있습니다. 데이터가 얼마나 소비되는지는 모르지만, 응용 프로그램이 충돌하는 경우가 있습니다. 내게는 BAD_ACCESS와 포인터가 NSLog 라인에 표시됩니다 .I NSLog는 응용 프로그램을 충돌시킬 수 있습니까?NSLog 충돌 응용 프로그램을 사용할 수 있습니까?

for (int i = 0; i < [UserNeedListArray count]; i++) { 
    EndUserNeed* aEndUser = [UserNeedListArray objectAtIndex:i]; 
    if ([appData.CurrentUser.userId isEqualToString:aEndUser.UserId]) { 
     NSMutableArray* temp = [[NSMutableArray alloc]init]; 
     [temp addObject:aEndUser]; 
     NSLog(@"%@",temp); 
     [arr_ShowMyOnly addObject:[temp objectAtIndex:0]]; 
     NSLog(@"%@",arr_ShowMyOnly); 
     [temp removeAllObjects]; 
     [temp release]; 
     temp = nil; 
    } 
} 

을 me.Thanking 도와주세요 ...

+2

NSLog() 자체가 아니라 응용 프로그램이 작동하지 않는 것을 표시하려는 변수입니다. 내가 할당 해제 된 변수를 기록하려고하는 것 같아요. Instruments >> Zombies로 응용 프로그램을 실행하여 변수를 할당 해제 할 위치를 찾으십시오. –

+0

정확히 어떤 줄에? Instruments (디버그 확인)로 디버깅을 살펴 보셨습니까?이 대답을 참조하여 가드 malloc 및 좀비 오브젝트를 활성화하십시오. 다음과 같은 상황에서 더 나은 디버깅 기능을 제공합니다 : http://stackoverflow.com/a/8682294/397898 –

+0

이 줄에 : NSLog (@ "% @", arr_ShowMyOnly); – HML

답변

-1

예. NSLog(@"%@",temp);을 수행하면 temp이 NSString 클래스 유형이라고 기대합니다.

당신이해야 할 일 NSLog(@"%@",[temp description]); 거의 모든 클래스에는 NSString 개체를 반환하는 설명 메서드가 있습니다.

+1

을 할당 했습니까? 'NSLog (@ "% @", temp)'정상적으로 작동합니다. 어쩌면 객체에'description' 메시지를 보내고 결과를 보여 주려고 시도하지만 작동합니다. – Morion

+0

예, 개체에 설명을 보낼 수 있습니다. 그러나 문서화되지 않았고 잠시 후 작동을 멈출 수 있습니다. % @이 (가) 무엇을 기대하는지 확인하십시오 https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1 –

+0

감사합니다. 많이 ... 그게 실제 문제 였어 ... – HML

0

리카르 말했듯이, 당신의 arr_ShowMyOnly 변수 문제가되지 NSLog과 : 다음은 내 코드입니다. 보관하고있는 곳을 확인하십시오. 예를 들어 생성 후 보존되었는지 확인하십시오. <. 그런데 코드 arr_ShowMyOnly 초기화를 추가 할 수 있습니다

5

좀 더 NSLog() 예 :

NSString *format = @"%s %d";  
NSLog(format, __FUNCTION__); 

이 장치에 충돌 할 수 및 arr_ShowMyOnly으로

+0

예 ... 고맙습니다 ... – HML

0

내가 가정 할당 된 시뮬레이터에 충돌 않을 것이다, 그래서이 수행

for (int i = 0; i < [UserNeedListArray count]; i++) 
    { 
    EndUserNeed* aEndUser = [UserNeedListArray objectAtIndex:i]; 
    if ([appData.CurrentUser.userId isEqualToString:aEndUser.UserId]) 
    { 
     [arr_ShowMyOnly addObject:aEndUser]; 
     NSLog(@"%@",arr_ShowMyOnly); 
    } 
    } 
0

시도해주세요.

for (int i = 0; i < [UserNeedListArray count]; i++) { 
     EndUserNeed* aEndUser = [UserNeedListArray objectAtIndex:i]; 
     if ([appData.CurrentUser.userId isEqualToString:aEndUser.UserId]) { 
      NSMutableArray* temp = [[NSMutableArray alloc]init]; 
      [temp addObject:aEndUser]; 

      NSLog(@"%@",temp); 
      if([temp count] >0) 
      { 
       [arr_ShowMyOnly addObject:[temp objectAtIndex:0]]; 
      } 
      if([arr_ShowMyOnly count] >0) 
      { 
       NSLog(@"%@",arr_ShowMyOnly); 
      } 
      [temp removeAllObjects]; 
      [temp release]; 
      temp = nil; 
     } 
    } 
관련 문제