2014-12-07 2 views
0

메서드를 호출하여 결과를 전달하는 일반 프로토콜을 사용하고 싶지만 다른 결과를 처리하는 다른 방법이 있습니다. 세부 사항에서는 클래스 A 두 가지 방법을 사용하는이 있습니다. MethodA 및 MethodB, MethodA에서 protocolA를, MethodB에서 protocolB를 설정하려고합니다. 내 문제는 이러한 프로토콜을 동적으로 정의하는 것입니다. 즉, methodA에만 protocolA를 정의하고 MethodB에만 protocolB를 정의하려고합니다.Objective C 프로토콜을 동적으로 구현하는 방법이 있습니까

이 방법이 있습니까?

+0

아마 당신이 원하는 것을 할 수있는 방법이 있지만 그것이 무엇인지는 분명하지 않습니다. 당신의 설명을 돕기 위해 좀 더 구체적인 예를 들어 주시겠습니까? –

+0

Josh : 같은 클래스에서 서로 다른 URL 연결 결과를 처리하려고합니다. – shubhamagg

답변

1

위임을 사용하는 유일한 방법은 클래스의 헤더에 프로토콜을 정의하고 이에 따라 해당 프로토콜을 사용하는 것입니다. '발굽에서 프로토콜을 만들 수 없습니다'. 귀하의 질문에

당신은 당신이 아니라 당신이 해결할 수있는 몇 가지 방법이 있습니다, 하나 MethodA에서 것이나 MethodB에서 다른 일을하고 싶은 말 :)

1를 ClassA 두 프로토콜 방법을 정의하고 하나를 호출 MethodA와 MethodB 중 하나입니다. 그런 다음 대리인은 이러한 프로토콜을 모두 구현하고 이에 따라 대응할 수 있습니다. (아마도 이것이 최선의 방법 일 것입니다).

2) ClassA에서 하나의 프로토콜 방법을 정의하고 각 방법에서 다른 인수를 전달하십시오. 예 : 대리인이 여러 테이블을 구별 할 수 있도록 테이블 뷰가 self을 통과하는 tableView 위임.

3) 블록을 사용하십시오. 블록은 코드를 전달하는 데 정말로 유용한 방법이며 objective-c 객체처럼 처리 할 수 ​​있습니다 (참고 : 그렇지 않습니다). 응답하는 클래스 (즉, 위임 할 대상)는 블록을 정의한 다음 ClassA로 전달하고 ClassA는 적절한 시점에 블록을 호출합니다. 블록은 애니메이션을 처리 할 때 일반적으로 완료 핸들러로 사용됩니다. e.t.c

그러나 메소드에서 프로토콜을 정의 할 수는 없습니다.

관련 문제