2011-11-30 7 views
5

Me tropecé con lo siguiente y parece que no puedo entender por qué funciona esto. ¿Puede explicar por qué no necesito usar un puntero antes del range?Acerca de los punteros en Objective-C

NSString *d = @"The quick brown fox"; 
NSRange range = [d rangeOfString:@"brown"]; 

Respuesta

9

NSString es un tipo de objeto. Todos los tipos de objetos son punteros y no se pueden crear en la pila. NSRange es una C-struct. Las estructuras se pueden crear en la pila y, por lo tanto, no necesariamente son punteros.

No hay una buena guía para saber cuáles son los objetos y cuáles son las estructuras. Deberá verificar cada tipo a medida que avanza.

+0

+1 Al OP: recuerde que Objective-C es un superconjunto de C, que agrega características OOP. Pero incluso si puede codificar de manera OOP, igual debe saber (al menos) algunos conceptos básicos de C. – Macmade

+0

Una comprensión sólida de las asignaciones de pila vs pila sería muy útil aquí. –

+1

Ni siquiera uno sólido ... Solo algunos conceptos básicos realmente ayudarían, en mi humilde opinión:) – Macmade

Cuestiones relacionadas