È vero, che l'asterisco significa sempre "Ehi, questo è un puntatore!" E un puntatore mantiene sempre un indirizzo di memoria?Che cosa significa Asterisco * in Objective-C?
(sì, lo so per l'eccezione che un * è utilizzato per il funzionamento di matematica)
Per esempio:
NSString* myString;
o
SomeClass* thatClass;
o
(*somePointerToAStruct).myStructComponent = 5;
Sento che c'è più di me è necessario conoscere Asterirsk (*) di quello che uso quando si definisce una variabile che è un puntatore a una classe.
Perché talvolta nella dichiarazione di un parametro si dice che la variabile Parametro è un puntatore, e comunque devo utilizzare l'asterisco davanti alla variabile per accedere al valore. Ciò che è successo di recente dopo aver voluto passare un puntatore di una struct a un metodo in un modo come [myObj myMethod: & myStruct], non ho potuto accedere a un valore di un componente da quella struttura anche se la mia dichiarazione di metodo diceva già che esiste un parametro (DemoStruct *) myVar che in effetti dovrebbe essere già noto come un puntatore a quella dimostrazione, tuttavia dovevo sempre dire: "Man, compilatore, ascolta! È IIISSS un puntatore:" e scrivi: (* myVar) .myStructComponentX = 5;
Davvero davvero non capisco perché devo dirlo due volte. E solo in questo caso.
Quando uso l'asterisco nel contesto di un NSString * myString, posso accedere a myString come preferisco, senza dire al compilatore ogni volta che si tratta di un puntatore. ad esempio usando * myString = @ "yep".
Non ha senso per me.
Questo è in realtà una domanda C in quanto non è specifico per Objective-C :) –
duplicato di http://stackoverflow.com/questions/581657/why-do-i-have-to-write-mypointervar-only-sometimes-in-objective-c – philant
cosa è specifico per Objective- C è la notazione @ "..." per un oggetto stringa. In Cocoa, la classe di tali oggetti stringa è NSString. – mouviciel