2012-01-09 1 views
2

을 내가 다른 클래스를 통지해야하는 목적-C 클래스를 쓴, 그래서 내가 위임에 대한 프로토콜 정의 : 난이 내 수업에서, 수업 시간에 자신의 대리자를 지정 인터페이스에 유형 검사를 빌더

@protocol glob_protocol <NSObject> 
    @required 
    - (IBAction) call:(int) val val2:(int) val2; 
@end 

을 대리자를 저장할 멤버 :

IBOutlet id <glob_protocol> delegate; 

인터페이스 작성기에서 클래스/인스턴스를 연결할 때 이제는 형식 검사가 없습니다. 모든 클래스를 대리자로 연결할 수 있습니다.

유형 검사를 가능하게하는 방법이 있나요? 프로토콜을 구현하는 클래스/인스턴스 만 위임자로 설정할 수 있습니다. 힌트, 스텐 대한

감사합니다.

EDIT : UIKit의 헤더 파일에서 추가 정보 나 키워드가 있는지 만 확인했지만 찾지 못했습니다. InterfaceBuilder가 어떤 인스턴스가 델리게이트로 설정 될 수 있는지에 대한 정보를 어디서 얻었는지 궁금합니다.

답변

2

이 일반적으로 작동합니다

- (void)setDelegate:(id<glob_protocol>)inDelegate 
{ 
    if (inDelegate) { 
    assert([inDelegate conformsToProtocol:@protocol(glob_protocol)]); 
    } 
    ... 
} 

를 그 원하는 수준/단계에서이 아니다 있지만, 연결이 자주 변경되지 않기 때문에 그것을 잘 작동합니다.

+0

귀하의 답변을 주셔서 감사합니다,하지만 나에게 도움이되지 않습니다. 코드에서 나는 (물론) 대리인이 전무가 아닌 경우 확인하고 그가 그것을 호출하기 전에 프로토콜을 준수하는지 확인. 인터페이스가 delegate로 설정 될 수 있는지 InterfaceBuilder가 확인하도록하는 것에 관심이 있습니다. –

+0

@Torsten 나는이 문제를 이해하고 당신이 원하는 것을. 내가 현재는 지원이 없기 때문에 알고있는 가까운 대안 대답/당신이 (AFAIK) 원하는 것을 위해 해킹. – justin

+0

그래, 고마워. InterfaceBuilder에서 검사를 활성화 할 수 없다면 지금 가지고있는 것을 고수하고 대리자를 지정할 때주의하십시오. –