1

私はiPhoneSDKを初めて使用します。コンソールですべての配列を印刷しています。データの量に関係なく、アプリケーションがクラッシュすることがあります。NSLog行にBAD_ACCESSとポインタが表示されます。混乱しています。 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;
    }
}

助けてください。ありがとう...

4

5 に答える 5

5

さらにいくつかのNSLog()例:

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

デバイスではクラッシュし、シミュレーターではクラッシュしません

于 2012-06-15T08:28:06.210 に答える
0

Ricardが言ったように、arr_ShowMyOnlyNSLogではなく、変数に問題があります。保持して解放する場所を確認してください。たとえば、作成後に保持されているかどうかを確認します<。ちなみに、arr_ShowMyOnly初期化のコードを追加することができます

于 2012-06-15T08:21:04.007 に答える
0

arr_ShowMyOnlyが割り当てられているので、次のようにします。

  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);
    }
  }
于 2012-06-15T08:28:31.570 に答える
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;
        }
    }
于 2012-06-15T08:59:46.207 に答える
-1

はい、できます。あなたがそうするとき、それはNSStringクラスのタイプであるNSLog(@"%@",temp);と期待します。temp

あなたの場合、あなたはするべきです NSLog(@"%@",[temp description]);ほとんどすべてのクラスはあなたにNSStringオブジェクトを返すdescriptionメソッドを持っています。

于 2012-06-15T08:21:25.500 に答える