Non sono sicuro di aver compreso il problema, ma cercherò di spiegarlo. Si prega di commentare se sono lontano dal marchio.
Sì NSObject
ha NSString
come proprietà.
Sì NSString
è una sottoclasse di NSObject
.
Non ci sono problemi nel fare ciò. È piuttosto comune, in determinate circostanze, che una classe abbia una variabile del proprio tipo. Pensa ai singleton, per esempio. Queste sono classi che contengono una copia statica di se stessi per garantire che ne venga creata una sola.
La differenza è che, NSObject
ha un NSString
in modo che tutte le sue sottoclassi lo faranno. Ogni oggetto ha una proprietà description e è uno strumento utile per il debug, tra le altre cose. Quando si stampa un oggetto sulla console, chiamerà la proprietà description e la passerà come valore di stringa, proprio come toString()
in altre lingue.
Potresti essere interessato al fatto che, questo significa che NSString
ha una proprietà NSString
. Questo è vero, ma richiamare la descrizione di NSString
restituirà semplicemente i dati di stringa. Qualsiasi tentativo di chiamare ricorsivamente la descrizione produrrà lo stesso valore restituito.
Questo è perfettamente valido nelle regole di ereditarietà.