Protocolli

di dna_programmer il
11 risposte
Salve a tutti,avrei urgentissimo bisogno del vostro aiuto:
ci sarebbe qualcuno cosi gentile da potermi spiegare cosa sono i protocolli e cosa vuol dire avere una property che deve essere conforme a un protocollo

grazie mille per la vostra disponibilità e pazienza

11 Risposte

  • Ciao in linea generale un protocollo è un insieme di regole e norme che servono a definire come un sistema, un'entità o attività si deve relazionare con le altre.
    Per esempio l'FTP (File Transfert Protocol) è un protocollo che definisce come deve avvenire lo scambio di file tra sistemi anche diversi.
  • Ciao, quindi una property che aderisce a un protocollo quali vincoli deve rispettare?
  • Quelli del protocollo.
  • Quindi nel caso io abbia:
    
    @protocol ClasseBDelegate <NSObject>
    - (void)mioEvento:(id)sender;
    @end
    
    @interface ClasseB : NSObject 
    {
        
    }
    
    @property (assign) id <ClasseBDelegate> delegate;
    
    la property delegate, che deve essere conforme al protocollo "ClasseBDelegate", cosa deve rispettare?
    questo non riesco a capire
  • I protocolli in generale sono quelli di cui parlava toki. In Objective C però i protocol sarebbero quelle che in Java si chiamano interfacce. Sulla documentazione di apple trovi la spiegazione, Cerca Protocols nella sezione Cocoa Fundamentals.

    In alternativa, se hai problemi con l' inglese, dai un occhio sul magico wiki.

    Intanto provo a spiegarti in due parole in cosa consiste.
    In sostanza quando definisci un protocol, non fai altro che definire le dichiarazioni di determinati metodi che potranno essere poi implementati da qualunque classe. Se una classe implementa quel protocollo è obbligata a implementare quei metodi, altrimenti non ti compila il programma. Una classe è conforme ad un protocollo quando implementa i metodi di esso.

    Spero sia tutto chiaro. Sul link di wikipedia ci trovi anche un esempio.

    Buon lavoro
  • Ciao d0zer, si grazie per i vari link, io il fatto delle classe e protocolli li avevo capiti, quello che non riesco a capire è cosa vuol dire che una PROPERTY aderisce a un protocollo. Cioè mica una property deve implementare dei metodi.
    Non so se mi sono spiegato bene
  • In un protocollo puoi definire anche delle property. Suppongo che per "avere una property che deve essere conforme a un protocollo" s' intende andare a dichiarare nella classe che implementa il protocollo, anche il syntesize (o in alternativa le implementazioni del getter e il setter della property).


    Di fatto quando hai una property e dichiari il syntesize, non fai altro che dire al compilatore di scrivere da solo i metodi get e set dell' attributo. Di conseguenza se dichiari una property nel protocollo, nella classe che implementa quel protocollo bisogna che ci sia o il syntesize o questi due metodi, altrimenti la property (e quindi la classe) non è conforme al protocollo.

    Sto fatto della property che dev'essere conforme al protocollo non l'avevo mai sentita, ma suppongo sia questo...non riesco a trovare altre spiegazioni
  • No io non intendo il fatto che una property viene dichiarata in un protocollo, io intendo questo:
    
    @property  id <ClasseBDelegate> delegate;
    
    cioè in questo caso la property "delegate" cosa deve rispettare del protocollo "ClasseBDelegate"?
  • Se tu hai una property del genere e vai a settarla da qualche parte, gli darai un istanza della classe. Se quella classe implementa i metodi di quel protocollo allora è conforme, altrimenti no, perchè gli stai dando un oggetto che non è conforme al protocollo che hai specificato tra parentesi angolari.

    Spero di esser stato chiaro...forse non riesco a capire qual è il tuo problema...
  • Hai centrato il punto,ecco quindi è la classe che chiamerà la property che deve essere conforme al protocollo e non la property, infatti mi domandavo: ma una property cosa deve rispettare?
    grazie mille ora mi è chiaro!
  • Perfetto prego
Devi accedere o registrarti per scrivere nel forum
11 risposte