정확히 dealloc
Cocos2D
장면의 방법은 무엇입니까? 다른 장면이로드되면 바로? 또는 장면로드가 끝난 후에?
또한 덮어 쓰기를 계획하는 경우 dealloc 메소드에 있어야하는 항목은 무엇입니까?
분명히 cocos2D
은 장면이 할당 해제 될 때 장면에 연결된 모든 노드를 자동으로 제거합니다. 그러나, 만약 내가 그것을 덮어 쓸 계획, 구체적으로 내가 호출해야합니다 방법은? 그렇다면 장면을 관리하여 100 % 누수가 없는지 어떻게 확인할 수 있습니까? 미리 감사드립니다.Cocos2D 장면 할당 해제
답변
CCScene의 deallocator는 다른 개체와 동일한 규칙을 따릅니다. CCScene에 대한 참조 횟수가 0에 도달하면 실행됩니다.
기본적으로 장면은 대체 할 장면을 신경 쓰지 않지만 장면 전환을 사용하여 장면을 변경하는 경우 두 장면이 동시에 존재하는 시간이 있습니다. 전환이 끝나면 전환은 첫 번째 장면에 대한 참조를 해제합니다. 첫 번째 장면은 마지막으로 그러한 참조가되고 첫 번째 장면은 할당 취소됩니다.
장면 deallocator에서 CCLOG를 넣어 정확하게 실행되는지 확인하십시오. 나는 각각에 하나씩 넣어.
일반적으로 alloc
, new
또는 copy
으로 시작하는 방법을 사용하여 만든 모든 개체를 Cocos2D 개체인지 여부에 관계없이 수동으로 해제합니다. Cocos2D의 node
과 같은 다른 생성 방법은 오브젝트를 수동으로 retain
으로 선택하지 않는 한 수동 릴리즈가 필요하지 않습니다. 직접 다른 노드에 자식을 추가하지 않을 경우이 방법을 사용하는 것이 좋습니다.
말했듯이 노드를 다른 노드로 추가한다고해서 추가 노드가 필요하지는 않습니다. release
; Cocos2D가이를 처리 할 것입니다.
장면 클래스에 할당 한 모든 개체가 장면으로 자식으로 추가되지 않으면 명시 적으로 해제해야합니다.
다른 장면 개체로 대체하거나 (replaceScene
메서드로) 장면을 대체하거나 장면 스택에서 장면을 팝업 할 때 장면이 해제되고 (대부분의 시간을 다른 곳에서 유지하지 않으면 할당이 취소됩니다).
소스 코드 (매우 유용한 설명이 포함되어 있음)를보고 장면 클래스를 사용자 정의한 경우 정확히 수행해야 할 작업을 배우는 것이 좋습니다.
- 1. cocos2d 장면/장면 전환 제거
- 2. cocos2d 장면 dealloc
- 3. 게임 센터 메모리 할당 해제 (Cocos2D 사용)
- 4. Cocos2d 가까운 장면
- 5. 전환시 cocos2d 푸시 장면
- 6. cocos2d 장면 간 이동
- 7. cocos2d 장면 대 레이어
- 8. UIWindow cocos2d 장면 지우기
- 9. Cocos2D 장면 메모리 관리
- 10. 올바른 cocos2d 장면 재시작?
- 11. 번들로 cocos2d 장면
- 12. UIKit 메뉴에서 cocos2d 장면 재시작
- 13. cocos2d 시작/중지 실행 장면
- 14. 여러 장면 지정하기 (cocos2d iPhone)
- 15. 리소스 할당/할당 해제
- 16. Cocos2d : 장면 사이에서 플레이어 데이터를 공유하는 방법
- 17. UIViewController가 이상한 방식으로 내 Cocos2d 장면을 할당 해제 중입니다.
- 18. Cocos2d 텍스처 아틀라스를 해제
- 19. UINavigationControllerDelagate를 올바르게 할당/할당 해제
- 20. iPhone Cocos2D - 특정 이미지로 장면 시작하기
- 21. Cocos2D Android 장면 개체를 갖는 방법?
- 22. GameScene 장면 (Cocos2d)에 HUD 추가
- 23. 일시 정지 모드에서 장면 전환하기 Cocos2D
- 24. NSMUtableDictionary 할당 해제 문제
- 25. 메모리 할당 및 해제
- 26. 보기를 올바르게 할당 해제
- 27. 메모리 할당 해제
- 28. QList 메모리 할당 해제
- 29. 할당 해제 된 NSMutableArray?
- 30. 수동으로 NSValue 할당 해제
오 ... 이제 알 것 같습니다! 바로 지금, 나는 cocos2D 노드 인 객체를 소유하고있는 특정 장면을 가지고 있습니다. 내가 "새로 고침"할 때마다 init을 사용합니다. 그게 내가 기억을 새기고 있다는 뜻인가? (한 번만 dealloc 메서드에서 해제합니다. 다시 감사합니다! – wayway
Aprics, 네 말이 맞아, 보유 개수가 초기화되고 초기화되지 않도록하는 alloc입니다.하지만 일반적으로 함께 사용됩니다. init에서하고있는 것 - 종종 다른 객체가 init에서 생성되므로, init을 다시 호출하기 전에 이들 객체를 해제하지 않으면 문제가 발생할 수 있습니다. –