2016-09-22 3 views
1

몇 달 전에 POP를 사용하기 시작했으며 전제가 정말 좋습니다. 그럼에도 불구하고 새로운 속성을 도입 할 능력이 없다는 생각이 든다. 실제 상황에서 확장 프로그램이 의도 한대로해야하는 하나 이상의 속성을 소개해야하는 경우가 종종 있습니다. 가장 최근의 예는 다음과 같습니다.프로토콜 지향 프로그래밍 및 추가 속성 소개

특수한 종류의 테두리를 렌더링하는 UIView가 있습니다. 저는 새로운 CALayer를 생성하고이를보기 위해 하위 레이어로 추가하여이 작업을 수행합니다. 보기의 경계가 바뀌면 오래된 테두리가 붙어 있습니다. 이 문제를 해결하기 위해 경계 레이어를 속성에 저장하고 레이아웃을 변경하면 이전 테두리 레이어를 제거하고 새 테두리를 만들 것입니다. 그러나 프로토콜은 속성을 직접 추가 할 수 없으므로 하위 클래스를 사용해야했습니다.

개선 사항을 사용할 수없는 일부 세부 사항을 생략 했으므로 위의 상황을 처리하는 방법에 대해서는별로 관심이 없습니다. 나는 이것이 우리가 함께 살아야만하고 하위 클래스로 되돌아 가야하는지 아니면 뭔가를 놓치고 어떻게 든 그것을 극복 할 수 있는지 알고 싶습니다.

나는 프로토콜이 그것을 구현하는 클래스도 정의 할 필요가있는 속성을 정의 할 수 있다는 것을 알고있다. 그러나 이것 역시 상당히 제한적이다. 이 모든보기에서 사용할 수 있도록 위의 예에서, 나는,있는 UIView, UIView의 아닌 일부 서브 클래스의 기능을 확장하고 싶어

+0

아무도 어떻게/언제/어디서/무엇을 프로토콜을 사용하여 충돌을 어색하게 회피하지 않고도 알 수 있다고 생각하지 않습니다. 잘 표현 된 유일한 추론 (이유)은 "이유"입니다. 이는 가독성, 유연성, 사용 용이성 및 생성 용이성, 유지 보수성 등의 허위 주장이었습니다. 모든 새로운 프로그래밍 패러다임에 모든 어렴풋한 주장이 영원히 적용되었습니다. 이론적으로는 훌륭하지만, 이론적으로 만 설명되었습니다. – Confused

+0

이것에 관해서, 애플은 Swift에 관해서, 그것의 자신의 개 음식을 먹지 않는 빈약 한 실행을 가지고 있습니다. 스위프트에서 애플 앱을 거의 만들지 못했다는 반응을 기억하면서도 다른 사람들을 위해 설교를하고 있었습니까? 내 생각에 하드웨어 사이클과는 달리 소프트웨어에 대한 모든 주장은 합법적 인 것으로 간주되기까지 2 ~ 3 세대를 기다려야한다고 생각합니다. 그들은 출시 될 때까지 새로운 하드웨어의 능력에 대해 속삭이지 않습니다. 이 정책은 소프트웨어 및 프레임 워크에 적용되지 않습니다. 소프트웨어 및 프레임 워크에서는 이해를 얻기 위해이를 선포합니다. 그들은 탄다. – Confused

+0

정말요? 나는 "신속한 응용 프로그램이 거의 없다"보다 신속한 것이 더 인기 있다고 생각했습니다. 난 꼭 obj-c를 사용해야한다는 점을 알지 못한다. 나는 약 1.3의 스위치를 만들었고 결코 그 결정을 후회하지 않았다. 나는 심지어 돌아가서 몇 가지 오래된 앱을 순수한 것으로 재 작성했다 (당신이 할 수있는 한 순수하게).이제 obj-c로 된 오래된 프로젝트로 되돌아 가야 할 때면 내 얼굴에 싫은 냄새가 난다. – Lope

답변

-1

내 건방진 대답 :

프로토콜 지향 프로그래밍이의 가난한 사람의 다중 상속입니다 그것을 가지고 있지 않은 OOP 언어.

그래서 계층 구조에서 필요로하는 것이 없으면 다른 프로토콜을 만들고 필요한 개체를 프로토콜에 적용하십시오.

상속을 통한 합성?

또는 상속 된 구성?

아마도 상관 없습니다.

) 작동 무엇이든

.

관련 문제