2017-03-10 1 views
0

저는 여러 구성 요소가있는 프로젝트를 만들고 있습니다. 이러한 구성 요소 중 일부는 응용 프로그램간에 재사용이 가능해야합니다. 응용 프로그램은 관련이 있지만 비즈니스 목적으로는 병합 할 수 없습니다. 고맙게도 아래의 문제는 실제로 문제를 일으키지는 않지만 어떻게 해결할 지 궁금합니다. 언젠가는 다음 패턴을 구현해야 할 수도 있습니다.프레임 워크간에 동일한 프로토콜을 병합하는 방법이 있습니까?

그래서 내가 Foo이라는 코코아 포드를 가지고 있고 또 다른 하나는 Bar이라고 명명했습니다. FooFoo.BussinessLogic 프로토콜을 구현하는 개체를 사용하여 대리인에게보고합니다. Bar은 단지 동일한 Bar.BussinessLogic 프로토콜을 사용합니다. 두 프로토콜을 모두 준수하는 객체를 작성할 수 있지만 직접 작성하는 것 이외에 FooBar.BussinessLogic에 맞게 작성하는 대신 Foo가 메시지를 보낼 때 각각의 작업이 item as! Bar.BussinessLogic이라고하는 주변에 래퍼 쌍을 작성하지 않고 어떻게 연결해야합니까? 바, 그 반대?

+0

"어떻게 2 개에 연결합니까?"그게 무슨 뜻입니까? 문제가 뭔지 모르겠다. 테이블 뷰 컨트롤러는 UITableViewDelegate 및 UITableViewDataSource를 준수하지만 항상 캐스팅하지 않아도됩니다. 그것은 단지 _is_입니다. – matt

+0

@matt 두 프로토콜이 동일하더라도 Bar.BussinessLogic implimenting 개체는 Foo.BussinessLogic을 호출하는 매개 변수로 받아 들여지지 않습니다. – RonLugge

답변

1

프로토콜이 여러 가지 방법을 공유하는 경우 본능은 두 프로토콜이 모두 의존 할 수있는 세 번째 라이브러리의 공통 프로토콜을 준수하도록하는 것입니다.

스위프트에서 컴파일러를 속일 수는 없으며 "신뢰할 수 있습니다. 같은 방법을 사용합니다"라고 말하면됩니다.

그러나 귀하의 질문에있는 유형이 매우 불투명하므로 질문에 대한 대답이 확실하지 않습니다. 가능한 다른 많은 솔루션이 있습니다. 그것은 상황에 달려 있습니다.

관련 문제