2010-07-23 1 views
8

나는 직장에서 아이폰 앱을 물려 받았고 Objective-C를 처음 사용하기 때문에 아직 내 태도가 없다. 이와 비슷한 코드가 발생했습니다.-dealloc은 릴리즈 메모리 이외의 것을해야합니까?

- (void) dealloc { 
    [[StaticObject sharedObject] showSomeDialog]; 

    [super dealloc]; 
} 

다른 언어로는 싫어합니다. 내 거미 감각이 그 코드를보고 미쳐 가고 있습니다.

일반적인 Objective-C 관용어입니까? 아니면 고칠 수있는 코드베이스가 있습니까?

답변

7

-dealloc에 ​​UI 코드를 넣으면 안됩니다. 일반적인 경험 법칙은 -dealloc을 사용하여 수행 한 작업을 정리합니다. 객체 해제, 옵저버 삭제 등

이 객체가 주 스레드가 아닌 다른 스레드에 있었던 경우 어떻게 될지 고려하십시오. 당신은 나쁜 것 인 비 주 스레드에서 실행되는 UI 코드를 가졌을 것입니다.

+4

짧은 버전 : "그렇습니다. 고칠 수있는 코드베이스가있을 수 있습니다." ;-) –

+1

내 직감을 확인하는 것이 좋습니다. – ageektrapped

0

일부 디버깅 이유로 이러한 일을 할 수 있습니다. 그러나 나는 당신이 이것 같이 무엇이든을해야 한 ㄴ다는 것을 생각하지 않는다! 개체를 할당 해제 할 때 대화 상자가 표시됩니다. 따라서 특정 시간에 대화 상자를 표시하는 메커니즘이 필요한 경우 할당 해제되는 객체에 의존하지 마십시오. dealloc 메소드에서는 할당 해제 된 객체가 보유한 모든 객체를 실제로 해제해야합니다. 그리고 멋진 응용 프로그램 기능을 수행하지 마십시오.