Sto imparando Objective-C al momento e ho trovato metodi opzionali nei protocolli. Il mio background è C# e può vedere un protocollo come qualcosa di simile all'interfaccia C#.Esempi reali di metodi di protocollo @optional
Se un'interfaccia C# rappresenta un contratto, pubblicizzando un'interfaccia si sta dicendo che implementerete i metodi definiti.
Con questo in mente sono confuso perché è necessario definire un metodo opzionale. Questo non è un insulto o un tentativo di ridurre l'obiettivo-C, adoro Objective-C. Voglio semplicemente comprendere i vantaggi di questi metodi facoltativi, al fine di ottenere una maggiore comprensione della lingua.
Apprezzerei molto se qualcuno potesse fornire alcuni scenari del mondo reale (con codice di esempio) in cui sono utili i metodi facoltativi.
penso che mi sto ora. Un'interfaccia C# è solo un aspetto di un protocollo Objective-C. È possibile utilizzare un protocollo come contratto, ma questi metodi facoltativi costituiscono un elenco di delegati facoltativi che un oggetto può scegliere di rispondere anche. È davvero interessante. – kim3er
+1 per l'utilizzo di un protocollo per la documentazione delle funzioni dei delegati –
Sono totalmente d'accordo con @Tom. Prima di Objective-C 2.0, i metodi delegate venivano di solito dichiarati in una categoria su NSObject per evitare che qualsiasi classe che vuole essere delegata debba implementare tutti i metodi. I metodi opzionali nei protocolli sono una soluzione molto più pulita che non appoggia tonnellate di metodi su NSObject e aiuta a evitare conflitti di metodo. Se solo Java avesse metodi di interfaccia opzionali, non ci sarebbe bisogno di cose come ereditare da MouseAdapter. Usare classi come queste di solito sono le poche volte in cui ho maledetto l'ereditarietà ... :-) –