2014-09-26 5 views
2
ABPersonViewController *personController = [[ABPersonViewController alloc] init]; 
personController.personViewDelegate = self; 
ABRecordRef person = ABAddressBookGetPersonWithRecordID(personController.addressBook, [recordID intValue]); 
personController.displayedPerson = person; 
personController.allowsEditing = YES; 
personController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Back",nil) style:UIBarButtonItemStylePlain target:self action:@selector(returnFromPersonView)] ; 
personController.navigationController.navigationBarHidden = NO; 

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:personController]; 
navController.navigationBar.tintColor=[UIColor colorWithRed:27/255.0 green:27/255.0 blue:29/255.0 alpha:1.0]; 
[self presentViewController:navController animated: YES completion:nil]; 

이 줄에서 충돌하는 중입니다. personController.displayedPerson = person; 같이하지 않는 유형은 유지] : 메시지 할당이 해제 된 인스턴스 컨트롤러에서하지 주소록을받을[Not Type retain]으로 ABPersonViewController로 리디렉션하는 동안 iOS8이 중단됨 : 할당 취소 된 인스턴스로 전송 된 메시지

+0

사용 악기와 좀비 도구를 사용! 그런 식으로 dealloc 호출 후에 어떤 객체가 메시지로 보내지는지 볼 수 있고, 누가 누구인지 알 수있다. –

답변

1

시도를 보냈지 만 명시 적으로 대신을 만듭니다

ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &err); 
ABRecordRef person = ABAddressBookGetPersonWithRecordID(addressBook, [recordID intValue]); 
+0

주소록을 만드는 것이 어떻게 도움이 될지 모르겠다. 그 사람은 그 이름으로 유지된다. - 아직 시도해 볼만한 가치가있다. –

+0

@ Daij-Djan 왜 그런지는 잘 모르겠지만, 이것이 효과적이다. 첫 번째 (원래) 케이스에서 EXC_BAD_ACCESS를 제공하고이 케이스와 함께 작동합니다. 아마이 단계에서'addressBook' 속성이 제대로 생성되지 않았기 때문일 것입니다. 문서에서 : [_ 설정하지 않은 경우 주소록이 만들어지고 필요할 때이 속성에 할당됩니다 ._] (https://developer.apple.com/library/ios/documentation/AddressBookUI/Reference/ABPersonViewController_Class/index.html# // apple_ref/occ/instp/ABPersonViewController/addressBook) 실제로 생성 될 때 명확하지 않습니다. – dmirkitanov

+0

합리적으로 들립니다. –

관련 문제