0
블록 (iOS 7)에 있다고 판단되는 잡히지 않는 오류가 발생합니다. 그러나 NSException은 디버그 로그에만 나타나기 때문에 원인을 알기가 어렵습니다. 여기 dispatch_async에서 알려지지 않은 예외가 발생했습니다.
내 코드입니다 :-(void)insertIntoArray:(NSArray *)array
{
@try {
if([array count] > 0){
NSArray *anArray = [array copy];
dispatch_queue_t q = dispatch_queue_create("getCustomerList", NULL);
dispatch_async(q, ^(void){
for (NSDictionary *dict in anArray){
Customer *customer = [[Customer alloc]init];
NSInteger i = [[dict objectForKey:@"CustomerID"] integerValue];
customer.ID = i;
customer.AppointmentID = [dict objectForKey:@"AppointmentID"];
customer.UID = [dict objectForKey:@"UID"];
customer.AccountNumber = [dict objectForKey:@"AccountNumber"];
customer.Birthdate = [dict objectForKey:@"Birthdate"];
customer.Gender = [dict objectForKey:@"Gender"];
customer.FirstName = [dict objectForKey:@"Firstname"];
customer.MiddleName = [dict objectForKey:@"MiddleName"];
customer.LastName = [dict objectForKey:@"LastName"];
customer.Address = [dict objectForKey:@"address1"];
customer.PhoneNumber = [dict objectForKey:@"PhoneNumber"];
customer.PictureName = [dict objectForKey:@"PictureName"];
customer.LastVisit= [dict objectForKey:@"LastVisit"];
customer.AccountOpened = [dict objectForKey:@"AccountOpened"];
customer.PhoneNumber2 = [dict objectForKey:@"HPNum"];
customer.DisplayName = [dict objectForKey:@"DisplayName"];
customer.ProfileImage = [dict objectForKey:@"ProfileImage"];
customer.EmailAddress = [dict objectForKey:@"EmailAddress"];
customer.Allergy = [dict objectForKey:@"Allergy"];
char index = [[dict objectForKey:@"DisplayName"] characterAtIndex:0];
NSString *uniChar = [NSString stringWithFormat:@"%c",index];
if(![self.arrayOfIndices containsObject:uniChar]){
[self.arrayOfIndices addObject:uniChar];
}
[self.arrayOfCustomer addObject:customer];
}
self.segmentedControl.userInteractionEnabled = YES;
[self.indicator stopAnimating];
[self.indicator removeFromSuperview];
[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
self.isRefreshing = NO;
[self.tableView setUserInteractionEnabled:YES];
self.tableView.scrollEnabled = YES;
self.navigationItem.rightBarButtonItem.enabled = true;
[self.refreshControl endRefreshing];
[self.tableView setContentOffset:CGPointMake(0.0, 0.0) animated:NO];
});
}
else {
[self.indicator stopAnimating];
[self.indicator removeFromSuperview];
self.isRefreshing = NO;
[self.tableView setUserInteractionEnabled:YES];
self.tableView.scrollEnabled = YES;
self.navigationItem.rightBarButtonItem.enabled = true;
[self.refreshControl endRefreshing];
}
}
@catch (NSException *exception) {
NSLog(@"Error %@",exception);
[self alertStatus:[NSString stringWithFormat:@"An unexpected error has occured. Exception %@", exception.reason] :@"Error!"];
}
self.navigationItem.rightBarButtonItem.enabled = true;
}
그리고 여기 NSException 로그에 보이는, 날 수있는 방법
내 질문은이
무엇 블록에서 예외 이유 또는 설명을 얻으시겠습니까? 그렇지 않은 경우 오류가 발생하는 코드에 문제가 있습니까?
누구든지 도움이된다면 기쁠 것입니다. 건배!
는 스택 추적을 표시합니다. – trojanfoe
모든 Objective-C 예외에 대한 중단 점을 만드는 것이 좋습니다. – newacct