Vai al contenuto

accessing unknown 'xxx' component of a property


Messaggi raccomandati

Salve a tutti,

durante la compilazione della mia app ottengo da xcode l'errore in oggetto.

All'interno della mia applicazione ho 3 classi

ClassA (UIViewController)

ClassB (UIViewController)

ClassC (NSObject)

All'interno di ClassA ho definito una proprietà definita come ClassB

@property (nonatomic, retain) ClassB *B;

all'interno di ClassB ho una proprietà definita come ClassC

@property (nonatomic, retain) ClassC *C;

ClassC ha all'interno alcune proprietà di tipo stringa

@property (nonatomic, retain) NSString *Prop1;
@property (nonatomic, retain) NSString *Prop2;

L'errore:

accessing unknown 'C' component of a property

lo ottengo all'interno di ClassA alla linea di seguito:

txtTest.text = self.ClassB.ClassC.Prop1;

nella classe (ClassA) inizializzo ClassB come di seguito

self.B = [[ClassB alloc] init];

come posso accedere alle proprietà di ClassC, instanziando ClassB, all'interno di ClassA?

Grazie,

saluti

Link al commento
Condividi su altri siti

ci sono alcuni errori nel tuo codice, alcuni logici alcuni semantici.

immagino che la tua confusione derivi dall'uso di property, che nato per semplificare il codice invece ha finito per confondere gli utenti nascondendo la reale implementazione.

il mio consiglio è quello di utilizzare dei comuni metodi getter e setter per avere più chiaro che cosa si sta facendo.

Tralasciando quella che potrebbe essere solo la mia opinione di programmatore a basso livello..

l'errore nel tuo codice è dovuto probabilmente al fatto che non hai realmente istanziato la classeC all'interno della classeB, ma ne hai solo fatto la dichiarazione.

devi quindi riscriverne il metodo INIT di classeB in modo che allochi un'istanza della classeC.

attento quindi poi ai metodi dealloc e release!

ma sei sicuro che questa sia la gerarchia corretta delle classi?

Problemi a programmare il tuo iphone? contattami

Link al commento
Condividi su altri siti

ci sono alcuni errori nel tuo codice, alcuni logici alcuni semantici.

immagino che la tua confusione derivi dall'uso di property, che nato per semplificare il codice invece ha finito per confondere gli utenti nascondendo la reale implementazione.

il mio consiglio è quello di utilizzare dei comuni metodi getter e setter per avere più chiaro che cosa si sta facendo.

Tralasciando quella che potrebbe essere solo la mia opinione di programmatore a basso livello..

l'errore nel tuo codice è dovuto probabilmente al fatto che non hai realmente istanziato la classeC all'interno della classeB, ma ne hai solo fatto la dichiarazione.

devi quindi riscriverne il metodo INIT di classeB in modo che allochi un'istanza della classeC.

attento quindi poi ai metodi dealloc e release!

ma sei sicuro che questa sia la gerarchia corretta delle classi?

Ciao Ignazio,

grazie per la risposta e scusa il ritardo con cui replice.

Le tue osservazioni sono più che giuste...c'era in effetti più di un errore logico, partendo dalla gerarchia delle classi e finendo alle proprietà che avevo dichiato come tali.

Grazie,

saluti

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...