2013-05-31 3 views
0

앱을 정확히 내가 주소록에서 모든 전화 번호를 읽고있다응용 프로그램은 아이폰 4에 충돌하지만 iPhone3gs

NSString *phone, *phone_personal, *phone_business; 
for(CFIndex i = 0; i < ABMultiValueGetCount(phones); i++) { 
      mobileLabel = (NSString*)ABMultiValueCopyLabelAtIndex(phones, i); 
      if([mobileLabel isEqualToString:(NSString *)kABPersonPhoneMainLabel]){ 
       phone = [(NSString*)ABMultiValueCopyValueAtIndex(phones, i) retain]; 
      } 
      else{ 
       [email protected]"(null)"; 
      } 

      if([mobileLabel isEqualToString:(NSString *)kABPersonPhoneMobileLabel]){ 
       phone_personal = [(NSString*)ABMultiValueCopyValueAtIndex(phones, i)retain]; 
      } 
      else{ 
       [email protected]"(null)"; 
      } 

      if ([mobileLabel isEqualToString:(NSString*)kABPersonPhoneIPhoneLabel]){ 
       phone_business = [(NSString*)ABMultiValueCopyValueAtIndex(phones, i)retain]; 
      } 
      else{ 
       [email protected]"(null)"; 
      } 

      [mobileLabel release]; 
     } 
    CFRelease(phones); 

우선이다 충돌의 코드에 잘 작동하고 배열 에 전화 번호를 추가합니다 숫자 배열.

if (!([phone isEqualToString:@"(null)"]|| phone == nil || phone.length ==0)){ 
      [arrayofnumbersandmeamsil addObject:phone]; 
     } 
     if (!([phone_personal isEqualToString:@"(null)"]|| phone_personal == nil || phone_personal.length ==0)) { 
      [arrayofnumbersandmeamsil addObject:phone_personal]; 
     } 
     if (!([phone_business isEqualToString:@"(null)"]|| phone_business == nil || phone_business.length ==0)) { 
      [arrayofnumbersandmeamsil addObject:phone_business]; 
     } 

내 문제는 내 애플 아이폰 4에 충돌 및 아이폰에서 잘 작동되고 모두가 아이폰 OS 6.1.3이 3GS. 나는이 문제가 phone_personal, phone_business의 초기화와 관련이 있다는 것을 알고있다.

메모리 릴리스와 관련된 문제입니다. 제가

CFRelease(phones); 

를 사용하여 전화를

[mobileLabel release]; 

를 사용 mobileLabel을 풀어 놓을 때 그럼 충돌 및 해제없이 메모리 누출을 나타낸다. 어떻게 처리할까요?

if(phones){ 
CFRelease(phones); 
} 

으로

CFRelease(phones); 

를 교체

답변

0

내 문제를 해결. 누군가가 도움이되기를 바랍니다.