문제는 언제든지 phones
변수에서 호출 된 모든 메서드에서 런타임 충돌이 발생한다는 것입니다. 이 버전에서는 1
(ABMultiValueCopyValueAtIndex
)에 오류가 표시됩니다. 이 줄에 주석을 달려면 2
(ABMultiValueGetCount
)으로 코드가 충돌합니다. 속성이 비어있는 것 같습니다. 내가 NSLog
인 경우 phones
변수입니다. 나는 (null)
이됩니다. iPhone Simulator에서 코드를 테스트 할 때 일부 전화 번호가있는 더미 연락처가 있습니다. 또한 firstName
및 lastName
은 매력처럼 작동합니다.iPhone의 주소록에서 여러 속성을 처리하는 방법은 무엇입니까?
답변
코드 :
addressBook = ABAddressBookCreate();
people = (NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook);
CFRelease(addressBook);
는 주소록과 너무 출시 된에서 reffered 된 모든 개체를 해제. 그래서 MultiValueRefs에 대한 포인터는 사용 전에 할당 해제되었습니다.
for(id person in people){
NSString *firstName = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
NSString *lastName = (NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);
ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
NSString *phone = (NSString*)ABMultiValueCopyValueAtIndex(phones, 0); /*1*/
/*2/ id ph, phLb;
for (CFIndex i = 0; i < ABMultiValueGetCount(phones); i++) {
phLb = ABMultiValueCopyLabelAtIndex(phones, i);
ph = ABMultiValueCopyValueAtIndex(phones, i);
NSLog(@"%@,%@", phLb, ph);
CFRelease(phLb);
CFRelease(ph);
}
*/
NSLog(@"%@", firstName);
NSLog(@"%@", lastName);
NSLog(@"%@", phones);
NSLog(@"%@", phone);
[firstName release];
[lastName release];
[phone release];
[phones release];
}는 디버거를 사용하는 방법에 대해 알아보세요. 또한 코드가 유출됩니다.
누수가 있다는 것을 알고 있습니다. 먼저 작동 시키려면 모든 변수를 유지해야합니다. – Alistra
주소록에 대해 잘 모르는 경우 tc 질문에 대답하지 마십시오. 감사! –
저는 ABMultiValueRef를 조달하는 방법에 대한 귀하의 가정을 잘못 생각합니다. 이 컴퓨터에는 내 AB 코드가 없지만 ABRecordCopyValue가 적절한 방법인지 확인하십시오. 그런 다음 ABMultiValueRef에 대한 내용을 액세스하는 방법에 대해 조사하십시오. 그것은 단순한 문자열보다 완전히 다른 객체 세트입니다.
댓글을 달았습니다. id 유형으로 시도 했는데도 작동하지 않았습니다. 나는이 예제가 apple 문서에서 거의 복사 - 붙여 넣어 진 것, 그것이 multiRef 부분을 사용하는 방법이라고 생각한다. 나는 일하러 나간다. – Alistra
- 1. 주소록에서 연락처를 읽는 방법은?
- 2. 주소록에서 이름과 성을 검색하는 방법은 무엇입니까?
- 3. 한 페이지에 여러 양식을 처리하는 방법은 무엇입니까?
- 4. 하나의 서버에서 여러 도메인을 처리하는 방법은 무엇입니까?
- 5. CodeIgniter에서 여러 프로젝트를 처리하는 방법은 무엇입니까?
- 6. 여러 파일을 처리하는 가장 완고한 방법은 무엇입니까
- 7. 같은 클래스의 여러 객체를 처리하는 방법은 무엇입니까?
- 8. Red5에서 여러 비디오 스트림을 처리하는 방법은 무엇입니까?
- 9. 여러 작업을 처리하는 가장 좋은 방법은 무엇입니까?
- 10. 여러 다른 파일을 처리하는 좋은 방법은 무엇입니까?
- 11. 한 페이지에서 여러 양식을 처리하는 방법은 무엇입니까?
- 12. java에서 여러 언어를 처리하는 방법은 무엇입니까?
- 13. 여러 CCSprites를 처리하는 가장 효율적인 방법은 무엇입니까?
- 14. 여러 파일을 동시에 처리하는 방법은 무엇입니까?
- 15. Java에서 여러 스트림을 처리하는 방법은 무엇입니까?
- 16. MySQL에서 여러 라디오 버튼을 처리하는 방법은 무엇입니까?
- 17. iPhone의 방향에 따라 자동 크기 변경 속성을 설정하는 방법은 무엇입니까?
- 18. Gremlin에서 여러 버텍스 속성을 업데이트하는 방법은 무엇입니까?
- 19. ABPeoplePickerNavigationController를 사용하여 주소록에서 여러 항목을 선택하는 방법
- 20. JSON : 키에서 파생 된 속성을 처리하는 방법은 무엇입니까?
- 21. C#에서 개체의 모든 속성을 반복 처리하는 방법은 무엇입니까?
- 22. Entity Framework 4.1에서 "계산 된"속성을 처리하는 방법은 무엇입니까?
- 23. iPhone의 콘솔로 출력하는 방법은 무엇입니까?
- 24. 주소록에서 연락처 삭제
- 25. 큰 데이터베이스를 처리하는 방법은 무엇입니까?
- 26. FileNotFoundException을 처리하는 방법은 무엇입니까?
- 27. 마법사 페이지를 처리하는 방법은 무엇입니까?
- 28. iPhone 주소록 : 여러 연락처를 선택하는 방법은 무엇입니까?
- 29. 주소록에서 일부 수신자에게 Winmail.dat 전송
- 30. 주소록에서 전화 번호를 문자열로 가져 오는 방법은 무엇입니까?
그래서 null을 처리하는 방법에 대한 질문은 무엇입니까? – slf
제 질문은 주소록에서 번호를 얻는 방법입니다. 숫자는 거기에 있지만 어떻게 든 null이됩니다. – Alistra