2010-12-29 3 views
0

안녕하세요,objective-c | 카테고리를 사용하여 UIApplication의 openURL 메서드를 재정의합니다. 어떻게 지금 원래의 ​​메서드를 호출 할 수 있습니까?

나는 플러스 +를 사용하고 있습니다. 카테고리를 사용하여 원래 UIApplication의 openURL 메서드를 재정의합니다. 거기에 원래의 UIApplication 메서드를 사용하는 방법은 ??? 내가 어떻게 할 수 있니?

+4

카테고리를 사용하여 시스템 메소드 (또는 모든 메소드)를 오버라이드 (override)하는 것은 매우 나쁜 형식이므로, 덤프 플러스 (+)를 사용하고 다른 것을 사용한다고 말할 수 있습니다. 범주는 메서드를 재정의하기위한 것이 아니라 새로운 방법으로 라이브러리 클래스를 동적으로 향상시키는 것입니다. 원래의 메소드 구현을 호출하는 신뢰할 수있는 방법은 없습니다. –

+4

또한이 사이트를 2 년 동안 사용해 왔으며 60 개 이상의 질문이 있지만 대부분 답변이 여러 개 있지만 그 중 26 % 만 허용했습니다. 그건 정말 나쁜 형태 야. –

답변

1

원래 방법에는 액세스 할 수 없습니다. 인용문 Apple's documentation :

범주가 상속 된 메서드를 재정의하는 경우 범주의 메서드는 보통 때와 같이 super에 대한 메시지를 통해 상속 된 구현을 호출 할 수 있습니다. 그러나 카테고리가 이미 카테고리의 클래스에 존재하는 메소드를 오버라이드하는 경우 원래 구현을 호출 할 방법이 없습니다. 당신 (이 경우, 플러스 +)가 소유하지 않은 클래스의 메소드를 오버라이드 (override) 범주를 사용하여 일반적으로

은 피해야한다.

관련 문제