2013-01-18 2 views

답변

1

목표 -C 언어는 현재 클래스가 상속하는 메소드 또는 클래스 인터페이스에서 선언 된 메소드를 대체하기 위해 카테고리를 사용할 수 있지만 그렇게하지 않는 것이 좋습니다. 카테고리는 서브 클래스를 대신 할 수 없습니다.

당신에 관한 질문 그것은 시스템에서 실행중인 다른 애플 리케이션에 영향을 미칩니 까?
답변 됨 큰 번호 이것은 귀하의 앱에만 영향을 미칩니다.

0

카테고리를 사용하면 기존 클래스에 새 메소드를 추가 할 수 있습니다. 또한 기존 메서드를 재정의 할 수 있지만 거의 호출되지 않을 메서드를 제어하지 못할 수도 있습니다.

때때로 Frameworks 메서드가 사용되는 메서드를 재정의하고 메서드가 고려되지 않습니다.

그래서 동일한 메소드 이름을 사용해서는 안된다. 당신은 차별화하기로 사용할 수 있습니다

addObserverCustom:

2

재정 addObserver:forKeyPath:option:contex 좋은 생각이 아니다. 카테고리 구현에서는 메서드의 super 구현을 호출 할 수 없습니다. 기본적으로 관찰자 중 아무 것도 추가되지 않는다는 의미입니다.

이것은 앱에만 영향을 미치지 만 UI 수준 또는 기금과 같이 외부 수준의 프레임 워크까지 영향을 미칩니다.

+0

요점은 외부 프레임 워크에 영향을주는 것입니다. method_exchangeImplementations (originalAddObserver, myAddObserver)를 사용하여 원래 메소드를 호출합니다. + load 클래스 메소드에서. – zalavari

+0

내가 필요한 이유는 속성의 관찰 가능한 배열 속성을 추가하는 것입니다. 그래서 새 addObserve :는 다른 모든 속성을 관찰하는 것보다 내 '속성'키를 확인하는지 확인하고 '속성'키에도 수동으로 알려줍니다. valuesAffectingKey ... 삽입 또는 삭제 알림을 제공하는 것처럼 변경 가능한 속성을 제대로 지원하지 않으므로 만족스럽지 않습니다. – zalavari

+0

또는 스크립팅 방법을 제공하십시오. – zalavari