2014-01-12 2 views
1

편집 : 내 질문에 대해 죄송합니다. 정적 분석기로 표시된 오류가 선 앞에있는 것으로 나타났습니다.
Obj-C 메서드ABRecordRef을 생성하고 반환하며 호출 코드에서 CFRelease에 의한 CF 개체 생성의 균형을 조정했지만 정적 분석기는 메모리 CF 객체의 관리가 올바르게 수행되어 "잠재적 누설"이 발생했습니다.
메서드를 C 함수으로 변환했으며 경고가 사라졌습니다.iOS : ARC에서 ABNewPersonViewController를 만들면 "잠재적 누출"경고가 나타납니다.

원래 질문 :
ARC에서 모달로 표시되는 UINavigationController의 하위 클래스가 있습니다. viewDidLoad 방법에서
, 나는 ABNewPersonViewController을 설정하고 다음 코드를 사용하여 탐색 스택에 밀어하여 제시 :

ABNewPersonViewController *personViewController = [[ABNewPersonViewController alloc] initWithNibName:nil bundle:nil]; 
personViewController.newPersonViewDelegate = self; 
personViewController.displayedPerson = self.contactToBeAdded;f 
[self pushViewController:personViewController animated:NO]; 

모든 것이 잘 작동을하지만 정적 분석기는 1 라인에서 제공 코드의 "메모리 (핵심 기초/목표 -C) 잠재적 인 개체 누출"경고.
왜 나는이 경고가 있으며 어떻게 제거 할 수 있는지 이해할 수 없습니다.
제안 사항이 있으십니까?

답변

1

UIViewControllerviewDidLoad에서 새로 만들려고하는데이 컨트롤러가 UIWindow 계층에 추가되지 않을 수 있습니다.

이 컨트롤러를 viewDidAppear 또는 viewWillAppear 방법으로 제시하려고하면 경고를 수정해야합니다.

+0

이 문제를 지원하는 문서를 제공해 주시겠습니까? – Lefteris

+0

물론 그렇습니다. [Here] (http://stackoverflow.com/questions/16949353/uiviewcontroller-present)와 관련하여 @Stas에 대한 좋은 답을 찾을 수 있습니다. –

+0

글쎄, 그건 우리가 아는 바를 말해 줄 뿐이다. 뷰가 아직 초기화되지 않았기 때문에 viewDidLoad 델리게이트에 view 또는 viewController를 절대로 제공해서는 안되지만 view 또는 viewController가 뷰에 추가되지 않는다는 것을 의미하지는 않는다. UIWindow 뷰 계층 구조. 새보기 또는 viewController를 그리는 데 컨텍스트를 찾을 수없는 경우 링크에서 표시 한 것과 같은 오류가 OS에서 발생합니다. – Lefteris