2011-04-26 10 views
1

이것은 나를 미치게합니다.
awakeFromNib 메서드가 한 번만 호출되는 경우 (해당 뷰를 다시 방문하더라도) 틀렸을 때 수정하십시오.awakeFromNib가 두 번 이상 호출되었습니다.

나는 3 전망 응용 프로그램을 가지고있다. 마지막으로 drawview를 사용하여 UIview의 하위 클래스가됩니다.

나는 방법은 한 번만 내가보기를 방문하는 방법을 지금까지 여러 번 호출되는으로, 지난보기 방법로 awakeFromNib와 작동 코드를했다.
이제 장치에 응용 프로그램을 배포하고 버전 4로 내 Xcode를 업데이트하십시오.

코드를 다시 실행하고 디버그 할 때 awakeFromNib 메서드는 뷰를 방문 할 때마다 호출됩니다.
나는 업데이트가 그런 미친 짓을 할 것이라고 생각하지 않지만 철저히 혼란 스럽다.

메모리 누수의 어떤 종류가 있습니까 아니면 내가 뭔가를 놓친 거지?

은 내가 잘못 경우

답변

3

내가로 awakeFromNib 방법은 한 번만 (해당 뷰를 다시 방문하는 경우에도)라고하는 인상이다, 정정 해줘 감사드립니다.

-awakeFromNib는 클래스의 인스턴스가 nib 파일에서로드 될 때마다 클래스의 각 인스턴스에서 호출됩니다. 특정 인스턴스에서 한 번만 호출 될 것으로 예상 할 수 있어야하지만 주어진 클래스의 다른 인스턴스에서 여러 번 호출되는 것을 처리해야합니다. 그들은 메모리 경고를 받고 자신의보기가 보이지 않을 때

UIViewControllers은 자신의 견해를 언로드합니다. 다음에 뷰 컨트롤러의 'view'속성이 호출 될 때 뷰가 다시로드됩니다. 특정 시점에 현재 보이는보기 만 메모리에 유지할 수 있으므로 앱의 메모리 사용을 최소화하려면이 동작을 이해하고 지원해야합니다.

해당 컨트롤러의보기 언로드하고 펜촉에서 다시로드를 기대하지 않는 것 소리.

+0

나는 아이폰 OS에로 awakeFromNib은 일반적으로 인해 메모리 제약에 한 번 이상이라고 할 수 내 아이폰 OS 개발 책 중 하나를 참조하십시오. OSX 용으로 개발하면 더 많은 자유를 누릴 수 있습니다. 작업 할 메모리가 훨씬 많기 때문에 일반적으로 한 번만 호출하면됩니다. –

+0

저기, 그리고 일반 "저 - 메모리"메카니즘은 정의되어 있지 않습니다. 당신은 자유롭게 펜촉을 언로 드해야합니다. –

+0

@Johan : 고마워. 나는 한 번 awakeFromNib을 호출 할 동일한 코드를 가지고 있었고, 지금은 다르게 작동하고있다 ... 나는 심지어 다르게 작동하는 내 휴대폰에 같은 코드를 가진 2 개의 앱을 가지고있다. 나는 awakeFromNib을 한 번 호출 할 수 있습니까? – R3D3vil

관련 문제