Según tengo entendido, los protocolos son como interfaces en otros idiomas (declaran los métodos esperados), mientras que las categorías le permiten agregar nuevos métodos a los existentes (incluso tipos que no le pertenecen)¿Por qué el iPhone SDK utiliza categorías, en lugar de protocolos, para algunos delegados?
¿Por qué? , ¿el SDK de iPhone a veces usa categorías para declarar tipos de delegados? Normalmente, esperaría que todos los delegados se digieran con el ID <MyDelegateProtocol>, pero hay muchos ejemplos en los que este no es el caso.
Por ejemplo, vea NSURLConnection. Su delegado se escribe "id" y el "contrato" se declara como una categoría en NSObject (NSURLConnectionDelegate).
Entonces, ¿cuál es la motivación para usar categorías en estos casos?
Esa fue mi suposición, pero no estaba seguro. ¡Gracias! –
Sin embargo, esperamos ver que el cambio en los protocolos llegue muy pronto. Ahora que los métodos de protocolo opcionales están permitidos, usarlos limpiará bastante el código y eliminará muchas categorías innecesarias. (Son geniales y todo, pero en lugar de aplicar métodos en NSObject durante el tiempo de ejecución, creo que tener un delegado que implemente un protocolo es mucho más limpio, tanto desde el punto de vista conceptual como desde tiempo de ejecución). –