In Objective-C puoi usare l'estensione privata in testa al .m (la sezione racchiusa tra @interface e @end prima di @implementation).
Buon anno anche a te.
Approfitto per dare a tutti un buon augurio di buon anno.
Voglio pulire un bel progettino,ma mi servirebbe questo:
ho una famiglia di Classi :
Root :NSObject
Child:Root
SubChild :Child
etc...
la classe Root ha un metodo -(void)faiQuesto; che dev'essere visto dall'esterno ,quindi dichiarato in .h ma non voglio che sia subClassato, quindi se mi trovo in viewController non voglio che se allochi la classe SubChild,venga visto il metodo "faiQuesto",ma solo se alloco la classe Root.
Mi spiego meglio con questo esempio
Codice:Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
Ultima modifica di neronorx; 01-01-15 alle 22:32
In Objective-C puoi usare l'estensione privata in testa al .m (la sezione racchiusa tra @interface e @end prima di @implementation).
Buon anno anche a te.
Ultima modifica di aramis; 02-01-15 alle 07:52
Si ma in quel caso il metodo non è accessibile dall'esterno,per ora ho risolto creando una classe padre con 2 figli,così un figlio non eredita i metodi dell'altro figlio,ma entrambi sono accessibili dall'esterno
In questo caso puoi usare le Categorie.
Ad esempio se hai una classe C1, puoi definire la categoria C11, con il .h
Le sottoclassi di C che importano C1 non vedono il metodo m11 mentre nelle altre classi potrai importare la categoria ed usare il metodo.Codice:Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
Ad esempio
con l'implementationCodice:Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
questo però per solo spirito di approfondimento. Nel caso del tuo esempio sono d'accordo con te che la soluzione migliore sia quella di strutturare diversamente la gerarchia.Codice:Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
Avevo già provato con le categorie,senza risultato però,ho ripreso i miei vecchi ebook cercando qualcosa che mi aiutasse,e la categoria à stata la prima cosa che mi è venuta in mente.
Ma quando nel viewController importavo tutti gli oggetti,importando anche la categoria,l'oggetto figlio,importava anche il metodo che non doveva importare.
è come se fosse che vuoi aggiungere un metodo alla classe NSString ma non alle sue sottoclassi
Nelle sottoclassi devi importare solo la classe originale senza la categoria.
Nel progetto allegato
C1: la classe originale
C12: (nel file C1+C12) è la sua categoria che dichiara ed implementa il metodo m11
C2: la sottoclasse di C1, importa C1 e non vede il metodo m11
C3: un'altra classe che importa C1+C12 e può accedere al metodo m11
provacat.zip
@protected ed @private dovrebbero limitare la visibilità.
francesco
Visit official site of SyncInside - Backing tracks advanced player
Visit official site of PiPlayer - Personal Instant rePlay
-- Non si smanetta mai di imparare --
@protected e @private servono per le variabili di istanza,non per metodi,l'esempio delle categorie devo ancora vederlo,ma ieri le ho provate di tutte.
Ecco cosa sto facendo,non ditemi che ce ne sono già fatti ,perché molti sono complessi nell'uso,e quelli semplici non hanno funzionalità che molte volte servono.
Questa classe fa uso di blocchi,recupera i valori settati per poi modificare le proprietà di un'oggetto.
Può essere utile nel creare form anagrafici,impostazioni di app etc....
Che ve ne pare? Schermata 2015-01-02 alle 18.37.05.jpg