2
A
답변
2
올바른 방법은 두 가지 방법 모두에서 해당 설정을 해제하고 nil로 설정하는 것입니다.
- 당신은 메모리 경고가 발생할 수 있기 때문에 viewDidUnload에서 객체를 해제해야하고,보기가 수퍼가없는 경우 당신은 메모리를 절약하기 위해 콘센트를 해제해야합니다. 뷰가 언로드되면 프레임 워크는 viewDidLoad를 다시 발행합니다.
- viewDidLoad + viewDidUnload가 반드시 호출되지는 않으므로 dealloc에서 개체를 릴리스해야합니다.
마지막으로 두 가지 방법 모두에서 변수를 nil로 설정하여 두 번째 릴리스를 호출 할 수 없도록해야합니다.
0
2
당신이 질문에 대한 짧은 대답 : 할당 해제()를
질문에 대한 길고 더 복잡한 대답은 모두
- 릴리스 viewDidUnload에서 사용하지 않는 IBOutlets(). 이 메소드는 장치의 메모리가 부족할 때 호출됩니다.
- 현재보기 컨트롤러가 메모리 관리를 담당하는 모든 객체를 해제하고 dealloc()에서 해제합니다. (자동 발표 된 개체는이 범주에 속하지 않습니다.)
1
loadView
및/또는 viewDidLoad
의 일부로 할당 및/또는 보유 된 모든 객체는 viewDidUnload
으로 릴리스되어야합니다. viewDidLoad
에 할당 된 항목을 모두 해제하면 NIB를 사용하는 경우 loadView
이 약간 더 세게 나타납니다. retain
으로 정의 된 속성 인 IBOutlet
은 loadView
의 일부로 묵시적으로 보관됩니다.
뷰는 예를 들어 UITextField
있는 하위 뷰를 가지고 있고로 정의 된 속성이보기를 연결하는 경우 : A는의 수를 유지해야합니다 펜촉에서로드 그리고
@property(nonatomic, retain) IBOutlet UITextField* nameField;
실제 텍스트 필드 +2. +1은 상위보기이기 때문에 +1하고 속성을 연결했기 때문에 +1합니다. 따라서보기 컨트롤러가 해제되거나 NIB가 다시로드 될 때까지 메모리가 해제되지 않습니다.
불행하게도 viewDidUnload
은보기 컨트롤러가 할당 해제 될 때 호출되지 않습니다. 그러므로 여기에 명시된 모든 IBOutlet도 명시 적으로 배포해야합니다.
-(void)releaseOutlets {
// Set all outlets to nil
}
-(void)viewDidUnload {
[self releaseOutlets];
[super viewDidUnload];
}
-(void)dealloc {
[self releaseOutlets];
// Release anything else.
[super dealloc];
}
관련 문제
- 1. wmi가 활성화되어 있으면 WCF가 물건을 어디에서 기록합니까?
- 2. 아이폰 SDK의 비디오 나 썸네일은 어디에서 볼 수 있습니까?
- 3. 아이폰 앱을위한 JSON 날씨 API는 어디에서 찾을 수 있습니까?
- 4. 다가오는 아이폰 개발자 이벤트에 대한 정보는 어디에서 찾을 수 있습니까?
- 5. 아이폰 용 facebook connect api는 어디에서 찾을 수 있습니까?
- 6. 아이폰 호환 정적 라이브러리가있는 javascriptcore 버전은 어디에서 찾을 수 있습니까?
- 7. 정적 컨트롤에 무언가를 끌어다 놓을 수 있습니까?
- 8. 어떻게 인터넷에 물건을 보낼 수 있습니까?
- 9. ListView에서 Winforms의 TreeView로 끌어서 놓을 수 있습니까?
- 10. 어디에서 linq 그래픽 디자이너를 찾을 수 있습니까?
- 11. obj-c에서 '.txt'파일을 어떻게 끌어 놓을 수 있습니까?
- 12. FastScrollView의 좋은 예는 어디에서 찾을 수 있습니까?
- 13. WMI 설명서는 어디에서 찾을 수 있습니까?
- 14. django. 객체를 놓을 수 없습니다.
- 15. 어디에서 wlWriterEditableSmartContent를 얻을 수 있습니까?
- 16. 어디에서 Castle.MicroKernel.dll을 찾을 수 있습니까?
- 17. 어디에서 GladeGen을 찾을 수 있습니까?
- 18. APL을 어디에서 배울 수 있습니까?
- 19. 어디에서 FlexAntTasks.jar를 얻을 수 있습니까
- 20. ContactsListActivity는 어디에서 찾을 수 있습니까?
- 21. 어디에서 jartoprc.exe를 얻을 수 있습니까?
- 22. 리뷰를 어디에서 구할 수 있습니까?
- 23. 어디에서 OpenCV를 얻을 수 있습니까?
- 24. 어디에서 Mono.Cecil.Pdb.dll을 얻을 수 있습니까?
- 25. 어디에서 VBSQL.VBX를 찾을 수 있습니까?
- 26. 어디에서 SAPI를 얻을 수 있습니까?
- 27. 어디에서 registerDefaults를 넣을 수 있습니까?
- 28. 어디에서 comdef.h를 얻을 수 있습니까?
- 29. ExpressionParseHelper는 어디에서 찾을 수 있습니까?
- 30. 어디에서 BigClip을 얻을 수 있습니까?
하지만 BAD_ACCESS가 두 방법 모두에서 객체를 릴리스 할 수 있습니까? – xger86x
아니요,이 값을 nil로 설정하면됩니다. – Moszi