我是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;
}
}
请帮帮我。谢谢你...
答案 0 :(得分:5)
更多NSLog()
示例:
NSString *format = @"%s %d";
NSLog(format, __FUNCTION__);
会在设备上崩溃并且不会在模拟器上崩溃
答案 1 :(得分:0)
正如Ricard所说,你的arr_ShowMyOnly
变量存在问题,而不是NSLog。检查您保留的位置并将其释放。检查创建后是否保留了&lt;例如。顺便说一句,您可以添加arr_ShowMyOnly
初始化
答案 2 :(得分: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);
}
}
答案 3 :(得分: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;
}
}
答案 4 :(得分:-1)
是的,它可以。当你执行NSLog(@"%@",temp);
时,它期望temp
是一种NSString类。
在你的情况下,你应该做NSLog(@"%@",[temp description]);
几乎所有的类都有一个描述方法,它会返回一个NSString对象。