문제

UinaVigationController를 사용하고 있으며 새로운보기를 푸시 할 때 개체를 해제하는 데 어려움이 있습니다. 새 컨트롤러를 밀기 전에 객체를 설정하고 싶습니다. 내가 현재하고있는 방식은 다음과 같습니다.

OpenPageViewController *varOpenPageController = [[OpenPageViewController alloc] initWithNibName:@"OpenPageViewController" bundle:nil];
varOpenPageController.bookObj = bookObj;
[[self navigationController] pushViewController:varOpenPageController animated:YES];
//[varOpenPageController release];

마지막 줄을 무결하게하면 컨트롤러 전체를 다시 탐색 할 때 프로그램이 충돌합니다. 또한 객체를 언제/어떻게 방출 해야하는지에 관한 또 다른 질문이 있습니다. BOOKOBJ에는 부패한 페이지 개체 배열이 있으며 현재 페이지 객체의 텍스트를 변경하고 싶습니다. 나는 이것을한다 :

Page *pageObj = [[bookObj pagesArray] objectAtIndex:currentPage];
pageObj.page_Text = textView.text;
[[bookObj pagesArray] replaceObjectAtIndex:currentPage withObject:pageObj];
//[pageObj release];

내가 마지막 줄에도 불만을 제기하면 프로그램이 충돌합니다. 앞으로 탐색 할 수는 있지만 다시 탐색하고 다시 앞으로 나아갈 때 충돌합니다.

객체를 자동 표시하면 비슷한 결과가 나옵니다. 가능하면 조언하십시오. 감사.

편집 : 첫 번째 예제 VaropenPageController를 출시하고 누출로 시뮬레이터를 실행하면 프로그램이 제대로 작동하는 것 같습니다. 그러나 누출을 실행하지 않으면 충돌이 발생합니다. 왜 이런 일이 일어날 수 있는지 아이디어가 있습니까? 감사.

도움이 되었습니까?

해결책

읽기 위해 비용을 지불 할 수 있습니다 Apple 메모리 관리 문서. 두 번째 항목은 PageOBJ를 릴리스 할 필요가 없습니다. BookObj 배열의 실제 항목에 대한 참조 만 포함되어 있으므로. 그것이 의미가 있다면 실제 항목이 아닙니다. 따라서 실제로하는 일은 배열에서 실제 항목을 공개하는 것입니다. 따라서 돌아가서 액세스하려고하면 거기에 없습니다.

경험의 규칙은 다음과 같습니다.

다른 팁

View Controller를 탐색 컨트롤러로 푸시하는 첫 번째 예는 릴리스에 맞습니다. 다시 돌아올 때 충돌하는 경우 OpenPageViewController DealLoc 메소드에 뭔가 잘못되었음을 의미하지만 내비게이션 컨트롤러가 뷰 컨트롤러를 유지하고 누른 후에 눌러야하는지 확인해야합니다 (있는 경우 푸시 컨트롤러가 view 컨트롤러를 보유하고 있어야합니다. 코드에서와 같이보기 컨트롤러 인스턴스를 할당).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top