2
내 앱에서 주소록에있는 전화 번호를 찾으려고 시도하는 중 Im을 (를) 찾지 못해 놀랐습니다. 그게 내 애플 리케이션에 의해 액세스 콘솔의 이상한 일부 연락처가 누락되었습니다 내 주소록의 모든 번호를 인쇄했습니다, 나는 내 주소록과 출력을 비교했다, 그것은 단지 몇 가지지만 아직도.ABAddressBookCopyArrayOfAllPeople의 연락처가 누락되었습니다.
이 메신저 주소록을 accesing 방법은 다음과 같습니다
ABAddressBookRef addressBook = ABAddressBookCreate();
NSArray *people = (NSArray *) ABAddressBookCopyArrayOfAllPeople(addressBook);
BOOL found = NO;
NSString *name;
int i = 0;
while (!found) {//Here I print all the contact info, name and phone number
ABRecordRef person = (ABRecordRef)[people objectAtIndex:i];
ABMultiValueRef multi = ABRecordCopyValue(person, kABPersonPhoneProperty);
NSLog(@"el telf: %@ y nombre %@",tempPhone2, [NSString stringWithFormat:@"%@ %@",ABRecordCopyValue(person, kABPersonFirstNameProperty) ? (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty) : @"",ABRecordCopyValue(person, kABPersonLastNameProperty) ? (NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty) : @""]);
if([[key objectForKey:@"phone"] isEqualToString:tempPhone2]){
found = YES;
}
}
임 내 주소록에있는 모든 연락처를 accesing하지 왜 어떤 생각?
[편집] 이상한 점은 내가 ABPeoplePickerNavigationController
을 사용할 때 누락 된 연락처가 나타나는 것입니다.
OP의 원래 코드에서 무엇이 잘못되었는지 설명 할 수 있습니까? :) –
나는 그가 거기에서 놓친 것을 모른다. 그러나 그것은 단지 작동 코드 다. 나는 나의 프로젝트에서 사용하고있다. –
만약'ABAddressBookCopyArrayOfAllPeople'과'ABMultiValueCopyArrayOfAllValues'를 사용한다면'CFRelease' 그들 (그리고'lAddressBook'도 마찬가지입니다)을 확인하십시오. 아니면'CFBridgingRelease'를 사용하여'CFArrayRef'에서'NSArray'까지의 수신자 부담 브리징을 즐길 수 있습니다. 그러면 ARC가 메모리 관리를 담당 할 것입니다. 그러나이 코드는 모든 연락처와 모든 전화 번호를 유출합니다. 정적 분석기를 사용하면 여기에서 모든 누설을 식별하는 데 도움이됩니다. – Rob