Commonlife's Blog

My daily life

iOS : iOS6 연락처에서 정보 가져오기

leave a comment »

기존의 앱을 유지 보수 하던 도중 연락처에서 전화번호를 못가져오는 사태가 발생되고 있었다.

찾아보니 문제는 iOS6의 개인 보안 정책 때문이었다.

ABAddressBookRef addressBook;
float thisVersion = [[[UIDevicecurrentDevice] systemVersion] floatValue];

if(thisVersion >= 6.0){
    addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
    __block BOOL accessGranted = NO;
    dispatch_semaphore_t sema = dispatch_semaphore_create(0);
    ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error){
        accessGranted = granted;
        dispatch_semaphore_signal(sema);
    });
    dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
    dispatch_release(seam);
} else {
    addressBook = ABAddressBookCreate();
}
  •  __block은 메모리 할당을 stack이 아닌 heap에서 한다.
Advertisements

Written by tocommonlife

2012/10/09 , 시간: 01:19

iOS에 게시됨

Tagged with , ,

답글 남기기

댓글을 게시하려면 다음의 방법 중 하나를 사용하여 로그인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: