Sono sostanzialmente la stessa cosa?Obiettivo-C. Puoi usare il protocollo come un'interfaccia Java?
Per esempio se ho un'interfaccia in Java
public interface CoolObject{
...
}
posso usare qualsiasi oggetto che implementa l'interfaccia CoolObject
nelle funzioni che accettano un CoolObject
come parametro:
public void foo(CoolObject o) {
...
}
è questo il lo stesso in Objective-C?
@protocol CoolProtocol
...
@end
@interface Foo: NSObject <CoolProtocol>
...
@end
(void) - someMethod: (CoolProtocol *) obj {
}
Sarebbe il lavoro di cui sopra (e essere considerato corretto?)
Grazie per il vostro tempo. Fammi sapere se hai bisogno di me per chiarire la mia domanda.
Buona risposta. Un approccio correlato è che CoolProtocol adotti il protocollo NSObject, il che rende l'id funzionare perfettamente. L'ultima forma è corretta, ma in genere eccessivamente prolissa poiché gli oggetti che (involontariamente) non riescono a sottoclasse NSObject generalmente causano errori in fase di compilazione e invoca la tipizzazione statica che riduce il dinamismo che rende Objective-C così potente e flessibile. –