2013-06-02 2 views
2

나는 UITableView에 클래스 카테고리를 추가하는 써드 파티 코드를보고있다. 인터페이스는 세 가지 메소드를 추가하지만 구현시 -dealloc 메소드에 대한 코드도 포함됩니다 (다른 도우미 메소드 중에서).클래스 카테고리의 Dealloc 메소드

클래스 카테고리에 익숙하지 않은데 - 나쁜 일을하는 것 외에도이 클래스는 UITableView의 모든 인스턴스에 대해 -dealloc 메서드를 재정의합니다 (카테고리가 특정 클래스에 의해 가져 오지 않더라도 ViewController) UITableView 인스턴스가?

답변

16

명확하게 쓰레기이므로 코드를 버리십시오 (가능한 경우 링크를 게시하십시오).

실제적으로 UITableView에있는 카테고리라고 가정하면 그 dealloc은 상속없이 - 상속 - 클래스의 일반 dealloc을 대체하여 잘못된 동작을 보장합니다. UITableView의 모든 인스턴스의 기능을 파괴 할뿐만 아니라 모든 하위 클래스를 망칠 것입니다.

UITableView의 카테고리가 아니지만 코드 구성을 시도한 경우에도 dealloc은 잘못된 위치에 있습니다. 항상이 수업의 주 @implementation에 있어야합니다. 클래스 클러스터처럼 기본 구현에서 모든 기본 메소드를 구현합니다. dealloc은 원시 메소드입니다 ("원시"메소드는 클래스 기능의 핵심이며 다른 기본 메소드의 측면에서만 구현되는 메소드입니다)).

+0

잘 못 읽습니다. –

+0

@bbum - 그걸 시험했을 때 일어난 것 같아요. (또 다른 질문에 대한 답 중 또 하나가 다른 것 같았습니다.) - 그러나 나는 그걸 가져 오지 않았기 때문에 어떤 일이 일어날 지 확신하지 못했습니다. 특정 클래스 (그것은 다른 곳에 있었다). 문제의 코드는 https://github.com/zhigang1992/ZGParallelView – Tom

+0

와우입니다. 링크를 가져 주셔서 감사합니다. 버그 신고. 그 저장소가 그 종류의 버그를 얼마나 많이 제공 받았는지보기 위해 무서워합니다! – bbum