2010. 8. 6. 17:18
NSZombieEnabled 개발 - iPhone/개발 Tip2010. 8. 6. 17:18
인터넷 돌아다니다가 우연히 보게되었는데 나중에 디버깅할 때 쓸모있을지 몰라서 올려둡니다.
http://www.cocoadev.com/index.pl?NSZombieEnabled
메모리 할당과 해제는 정말 어렵죠. ^^;
아 할당과 해제가 어려운게 아니라 그걸 제대로 지켜가면서 사용하는게 어렵다고 해야할려나요.
개인적 생각으론 Java나 C#처럼 그냥 알아서 해주든지 C/C++처럼 명시적으로 해주면 좀 더 명확할건데 autorelease랑 factory개념때문에 처음 입문하거나 새로운 Class를 사용하게되는 경우 더 힘들지 않나 싶네요.. 뭐든지 다 마찬가지겠지만 익숙해지면 나아지겠죠. ^^;
아 중요한 NSZombieEnabled에 대한 설명이 없이 잡설만 늘어놨네요.
위 링크에 가시면 자세한 설명이 나와있지만, 간략히 말씀드리면 이놈은 Memory 해제시 실제 해재하지 않고 단지 해제했다는 mark만 달고 해제한 오브젝트에 메시지를 보낼 경우 로그를 남기게 됩니다. 이런게 왜 필요하냐면, 메모리 해제를 한 후 그 해제한 오브젝트를 이용해서 뭔가 할 경우 이상하게(undefined라고 하죠 ^^) 작동해서 그 원인을 찾기가 매우 어렵기 때문에, 해제한 오브젝트에대한 호출을 쉽게 찾기 위해서입니다. 예전에 C++에서도 비슷한 경우에 대한 처리방법에 대한 기사를 읽었던거 같은데 너무 오래전이라 기억이 가물가물하네요. 요즘은 C#을 알게된 뒤론 C나 C++은 소스만 봐도 이상하게 보이는 듯 하네요. ㅎㅎ
http://www.cocoadev.com/index.pl?NSZombieEnabled
메모리 할당과 해제는 정말 어렵죠. ^^;
아 할당과 해제가 어려운게 아니라 그걸 제대로 지켜가면서 사용하는게 어렵다고 해야할려나요.
개인적 생각으론 Java나 C#처럼 그냥 알아서 해주든지 C/C++처럼 명시적으로 해주면 좀 더 명확할건데 autorelease랑 factory개념때문에 처음 입문하거나 새로운 Class를 사용하게되는 경우 더 힘들지 않나 싶네요.. 뭐든지 다 마찬가지겠지만 익숙해지면 나아지겠죠. ^^;
아 중요한 NSZombieEnabled에 대한 설명이 없이 잡설만 늘어놨네요.
위 링크에 가시면 자세한 설명이 나와있지만, 간략히 말씀드리면 이놈은 Memory 해제시 실제 해재하지 않고 단지 해제했다는 mark만 달고 해제한 오브젝트에 메시지를 보낼 경우 로그를 남기게 됩니다. 이런게 왜 필요하냐면, 메모리 해제를 한 후 그 해제한 오브젝트를 이용해서 뭔가 할 경우 이상하게(undefined라고 하죠 ^^) 작동해서 그 원인을 찾기가 매우 어렵기 때문에, 해제한 오브젝트에대한 호출을 쉽게 찾기 위해서입니다. 예전에 C++에서도 비슷한 경우에 대한 처리방법에 대한 기사를 읽었던거 같은데 너무 오래전이라 기억이 가물가물하네요. 요즘은 C#을 알게된 뒤론 C나 C++은 소스만 봐도 이상하게 보이는 듯 하네요. ㅎㅎ
'개발 - iPhone > 개발 Tip' 카테고리의 다른 글
iPhone Keychain Access (0) | 2010.09.09 |
---|---|
Setting cocos2D camera position using CCFollow (0) | 2010.09.05 |
소스 코드를 웹페이지에 삽입할 때 유용한 사이트 (0) | 2010.07.26 |
UITabBarController의 UINavigationController에서 하위에서 TabBar 숨기기 (0) | 2010.07.22 |
cocos2d box2d로 프로그래밍 시작하기 (0) | 2010.05.04 |