클래스와 프로토콜을 혼합하려고하면 Objective-C에서의 의미는 무엇입니까? 클래스가 프로토콜을 준수하지 않으면 컴파일러에서 경고 메시지를 보내려고합니다. 예를 들어 :이 때Objective-C 클래스 키워드 및 프로토콜
@protocol FLLiveDataProtocol <NSObject>
...
@end
- (id)initWithDataPath:(NSString *)path usingDataClassFactory:(Class<FLLiveDataProtocol>)dataFactoryClass;
는 그러나, 나는 흥미로운 문제의 모든 종류를 얻을. 첫째, 프로토콜을 준수하지 않는 클래스를 전달하면 컴파일러 오류가 발생하지 않습니다. 두 번째로 [[dataFactoryClass]를 수행하려고하면 Selector alloc에 대한 클래스 메소드를 알 수 없습니다. alloc] init] NSObject를 따르는 프로토콜을 통해서조차.
내가 프로토콜의 및 클래스 키워드를 혼합하려고 사람들의 많은 예를 보지 못했다 (- 감사 니콜라이 나는 형식 정의라고한다).
은 내가 런타임에 확인하는 conformsToProtocol을 사용할 수있어,하지만 난 컴파일시에 확인이 얻을 수 있다면 좋을 것이다.
사실, 런타임에 conformsToProtocol은 확실한 말조차하지 않을 것입니다. 왜냐하면 각 관련 방법에 대해 respondSelector를 수행해야하기 때문입니다. (이것은 "오리 타이핑"의 뒷면입니다. 오리가 아니라는 것을 알 수있는 유일한 방법은 보이지도 걷지도, 돌팔이도 같지 않음을 기억하는 것입니다.) –
잘못된 문제를 해결하려고합니다. 데이터 팩토리가 클래스 여야 만하는 이유는 무엇입니까? 인스턴스면 훨씬 쉽습니다. –
주어진 factory 클래스를 기반으로 여러 인스턴스를 생성해야하므로 표준 Factory 패턴을 사용하고 있습니다. –