1

我是 iPhone SDK 的新手。我正在控制台中打印每个数组。无论消耗多少数据。我注意到有时我的应用程序崩溃了。它给了我 BAD_ACCESS 和指针显示在我的 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;
    }
}

请帮帮我。谢谢...

4

5 回答 5

5

更多NSLog()示例:

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

会在设备上崩溃并且不会在模拟器上崩溃

于 2012-06-15T08:28:06.210 回答
0

正如里卡德所说,你的arr_ShowMyOnly变量有问题,而不是 NSLog。检查您保留并释放它的位置。例如,检查它是否在创建后保留<。顺便说一句,您可以添加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

是的,它可以。当你这样做时,NSLog(@"%@",temp);它期望这temp是一种 NSString 类。

在您的情况下,您应该这样做 NSLog(@"%@",[temp description]);几乎所有的类都有一个描述方法,它将返回一个 NSString 对象。

于 2012-06-15T08:21:25.500 回答