Es cierto, que el Asterisk siempre significa "¡Oye, eso es un puntero!" ¿Y un puntero siempre tiene una dirección de memoria?¿Qué significa Asterisk * en Objective-C?
(Sí que sé con la excepción de que un * se utiliza para la operación matemática)
Por ejemplo:
NSString* myString;
o
SomeClass* thatClass;
o
(*somePointerToAStruct).myStructComponent = 5;
Siento que hay más yo Necesito saber sobre el Asterirsk (*) que el que uso cuando defino una variable que es un puntero a una clase.
Porque a veces ya digo en la declaración de un parámetro que la variable Parameter es un puntero, y aún tengo que usar el Asterisk delante de la Variable para acceder al valor. Esto sucedió recientemente después de querer pasar un puntero de una estructura a un método de una manera como [myObj myMethod: & myStruct], no pude acceder a un valor de componente desde esa estructura aunque mi declaración de método ya decía que hay un parámetro (DemoStruct *) myVar que de hecho ya debería conocerse como un puntero a esa demostración, aún así siempre tuve que decir: "Hombre, compilador. Escucha! I IISS un puntero:" y escribe: (* myVar) .myStructComponentX = 5;
Realmente, realmente no entiendo por qué tengo que decir eso dos veces. Y solo en este caso.
Cuando uso el Asterisk en el contexto de un NSString * myString, entonces puedo acceder a myString de la forma que prefiera, sin decirle al compilador cada vez que es un puntero. es decir, me gusta usar * myString = @ "yep".
Simplemente no tiene sentido para mí.
Esto es en realidad una pregunta C, ya que no es específico de Objective-C :) –
duplicado de http://stackoverflow.com/questions/581657/why-do-i-have-to-write-mypointervar-only-sometimes-in-objective-c – philant
qué es específico de Objective- C es la notación @ "..." para un objeto de cadena. En Cocoa, la clase de tales objetos de cadena es NSString. – mouviciel