问题是 ,我们都知道 委托和代理是一种设计模式。那么问题来了,既然一个类中可以单独的写一个协议出来,像Category或者Extension 一样。可以直接在当前类里面写出来。当然单独创建出来也有用处。
但是一个单独创建协议的文件(Protocol)意义何在。是封装一些方法吗,还是干什么。如果是封装一些方法,继承自NSObject的类,好像没有什么东西可以触发让他在关键时候实现对象的方法,就算遵守了其他协议,那也没有实现啊,怎么调用。如果是定义一套标准出来,那这个标准意义在哪里哪,请求大牛,给我解惑!!万分感谢!
이것은 객체 지향 질문입니다. 예를 들어 비행기와 새는 둘 다 날 수 있지만 구현 방법이 다릅니다. 네, 그렇다면 이 프로토콜을 별도로 정의해야 할까요? 언젠가는 사람들이 비행기를 탈 수 있게 될 수도 있고, 그러면 사람들이 비행 계약을 이행하는 것만으로도 충분할 것입니다.
예를 들어 iOS에서 NSArray는 NSFastEnumeration 프로토콜을 구현합니다. NSDictionary와 NSSet도 구현 방법은 다르지만 비행기와 새가 날 수 있는 것처럼 모두 빠른 열거가 가능합니다. 빠르게 열거할 수 있는 개체가 필요할 때 NSFastEnumeration 프로토콜을 따르는 개체라면 NSArray인지 NSDictionary인지 걱정할 필요가 없습니다. 아마도 이것이 말씀하신 표준의 의미가 아닐까 싶습니다.
Objective-c는 객체 지향 C입니다. 상속의 개념은 단일 클래스 상속에 반영됩니다. 프로토콜은 C++에서 다중 클래스 상속을 구현하는 데 사용되어 하위 클래스가 여러 상위 클래스를 상속할 때 복잡성을 피하고 클래스를 평면화합니다. 계층.
예를 들어 자동차가 상위 클래스인 경우 연료 차량과 전기 자동차라는 두 개의 하위 클래스가 있습니다. 하이브리드 차량이 필요한 경우 하이브리드 차량은 두 개의 상위 클래스를 상속해야 합니다. 클래스 계층 구조는 세 가지 수준이지만 프로토콜을 사용하는 경우 하이브리드 차량은 연료 및 전기 프로토콜을 구현하며 두 가지 클래스 계층 구조만 필요합니다.
http://www.jianshu.com/p/ae7472664afc 이 내용을 보시면 됩니다. 제 이해는 디커플링
입니다.