SCNRenderer에 카메라 유틸리티 메서드를 추가하는 범주를 작성했습니다. 이러한 동일한 방법은 SCNView 및 SCNLayer에도 똑같이 유용합니다. 이 카테고리가 관련 될 세 클래스는 모두 SCNSceneRenderer를 따릅니다. 특정 클래스가 아니라 특정 프로토콜을 준수하는 모든 클래스에 적용되는 범주를 작성할 수 있습니까?프로토콜을 준수하는 모든 클래스에 범주 구현
3
A
답변
3
SCNSceneRenderer 개체 걸릴 일부 유틸리티 함수 작성하는 것이이를위한 가장 간단한 방법 : 메서드 호출 구문을 사용하거나에서 구현을 재정의 할 수있게하려면하려면
void ABCDoSomethingUseful(id<SCNSceneRenderer> renderer)
{
//...
}
void ABCDoSomethingElseUseful(id<SCNSceneRenderer> renderer)
{
//...
}
을
// This goes in a source file:
@interface NSObject (SCNSceneRendererConformance) <SCNSceneRenderer>
// Surpress compiler warnings about NSObject not responding to
// SCNSceneRenderer's messages
@end
@implementation NSObject (MyCategory)
- (void)abc_doSomethingUseful
{
//...
}
- (void)abc_doSomethingElseUseful
{
//...
}
@end
는 다음 프로토콜을 노출 :
// This goes in a header file:
@protocol MyProtocol <NSObject>
- (void)abc_doSomethingElseUseful;
- (void)abc_doSomethingUseful;
@end
서브 클래스는, 또 다른 옵션은 NSObject의의 카테고리로 메소드를 구현하는 것
그것은 또한 당신의 프로토콜을 준수 함을 선언 SCNSceneRenderer에 맞는 각 클래스에 대한 인터페이스 전용 카테고리를 추가 :
// This also goes in a header file:
@interface SCNLayer (MyProtocolConformance) <MyProtocol>
@end
@interface SCNView (MyProtocolConformance) <MyProtocol>
@end
0
프로토콜이 인터페이스를 구현하지 않기 때문에 프로토콜을 통해 카테고리를 추가 할 수 있다고 생각하지 않습니다. 반면 카테고리에서는 우리가 구현해야합니다.
관련 문제
- 1. 프로토콜을 준수하는 클래스의 범주
- 2. 프로토콜을 준수하는 속성을 재정의합니다.
- 3. 프로토콜을 준수하는 객체 인스턴스 만들기
- 4. 스위프트 : 프로토콜을 준수하는 인스턴스로 완료 닫기
- 5. XCode 4의 특정 프로토콜을 준수하는 모든 클래스 목록을 얻으려면 어떻게해야합니까?
- 6. 프로토콜을 준수하는 클래스 유형을 전달하는 방법
- 7. 하위 클래스는 부모가 준수하는 프로토콜을 구현해야합니까?
- 8. 신속하게 클래스가 준수하는 프로토콜을 어떻게 결정합니까?
- 9. OS 버전에 기반한 프로토콜을 준수하는 방법은 무엇입니까?
- 10. 프로토콜을 준수하는 객체의 배열을 정의하는 방법은 무엇입니까?
- 11. 프로토콜을 준수하는 클래스 - 컴파일 시간 검사
- 12. 에만 "범주"클래스에 태그
- 13. 클래스에 프로토콜을 선택적으로 추가하기
- 14. 준수하는 Java 클래스에 필요한 모든 가져 오기를 나열하는 이식성이 무엇입니까
- 15. 프로토콜을 개인적으로 구현 하시겠습니까?
- 16. 클래스에 대리인을 지정하려면 프로토콜을 지정해야합니까?
- 17. Hashable 프로토콜을 준수하는 일반 구조체 구현. 오류 : 제네릭 유형 'strA'에 대한 참조가 필요합니다. <...> 오류
- 18. NSObject에서 서브 클래 싱하지 않고 NSObjectProtocol을 준수하는 프로토콜을 준수합니까?
- 19. 특정 프로토콜을 준수하는 개체에 의존하는 범주를 만드는 방법은 무엇입니까?
- 20. 나는 UIAlertViewDelegate 프로토콜을 준수하는 NSObject입니다. 자신을 릴리즈하는 것이 적절한가요?
- 21. 프로토콜을 준수하는 클래스에서 형식 메서드를 호출 할 수 없습니다.
- 22. 프로토콜을 준수하는 클래스 유형으로 속성을 정의 할 수 있습니까?
- 23. 특정 수퍼 클래스를 확장하고 프로토콜을 준수하는 변수를 선언하는 방법
- 24. iOS 카테고리는 속성이있는 프로토콜을 준수합니다. 구현 방법
- 25. 기본 클래스에 IExtensibleDataObject 구현
- 26. 클래스에 대한 QProgressBar 구현
- 27. 다른 클래스에 INotifyPropertyChanged 구현
- 28. Android : 클래스에 sensormanager 구현
- 29. 값 클래스에 GetHashCode 구현
- 30. 봉인 된 클래스에 IDisposable 구현
난 그냥 사실을 무시한다 지금 무슨 짓을했는지이 카테고리 유용 할 것 둘 이상의 클래스에 대해서는 SCNRenderer에 대해 구현하십시오. 필자는 유틸리티 유틸리티를 작성하는 길은 아마도 갈 길이라고 생각합니다. 나는 아마도 그것들을 몇몇 유틸리티 클래스에서 클래스 메소드로 만들 것이다. –
예 ... NSObject 아이디어에 대한 범주를 되돌아 보면,별로 이득이되지 않는 이상한 일입니다 ... –