¿alguien puede decir la diferencia entre el objetivo C y C++ este puntero?Diferencia b/n Objetivo C y C++ es esto?
Respuesta
La diferencia principal es que this
es una palabra clave, mientras que self
es una variable. El resultado de esto es que mientras this
siempre se refiere al objeto que está ejecutando un método en particular, los métodos de Objective-C son libres de modificar self
durante la ejecución. Esto a veces lo utilizan los constructores, que establecen self = nil
en caso de error.
Las razones para hacerlo son:
- de manera que las subclases (que inicializadores con
self = [super init]
cadena) se puede ver cuando la inicialización falla y saben que no deben continuar en sus propios inicializadores. - Los objetos de composición pueden ver el error y saber que no tienen un componente válido.
Algunos inicializadores establecerán self
en un objeto diferente, pero válido. Esto se puede usar en clústeres de clase, donde la clase "abstracta" puede generar una instancia temporal mientras se construye el objeto inicializado, pero finalmente devuelve un objeto diferente en función de las propiedades que se crearon durante la construcción.
Además, significa que puede hacer las cosas habituales con nombres de variables que confunden a todos los que no puede hacer con palabras clave, como definir una variable más local con el mismo nombre self
en un bloque de código.
En C++, * puede * modificar el valor de esto. No digo que debas, pero he visto que solía incluir información adicional en un sistema en el que el puntero de 32 bits no se usaba completamente en las asignaciones de memoria ... – jv42
@ jv42: mi compilador no permite eso sin establecer un opción, así que asumí que era no estándar o anacrónico. –
@ jv42: 'this' es un valor r, no se puede modificar. – GManNickG
Sí. Uno se escribe s-e-l-f. El otro se escribe t-h-i-s.
menos en broma:
self
se utiliza en las clases de Objective-C para representar un puntero de la instancia actual.
this
se utiliza en las clases de C++ para representar un puntero a la instancia actual.
Realizan funciones análogas pero en estructuras completamente diferentes.
@Preet Sangha: ¿Y qué tiene de malo tener una broma en la respuesta? – JeremyP
Lol. Escribí una broma porque era demasiado vago como para buscar la forma de deletrear graciosamente una vez que la había eliminado. Y para responder a su pregunta nada en absoluto. –
- 1. ¿Cuál es la diferencia entre C++, objetivo-c y objetivo-C++?
- 2. objetivo c diferencia entre funciones y métodos
- 3. Objetivo-C: ¿Cuál es la diferencia entre forKey y forKeyPath?
- 4. Mezcla C y objetivo-C
- 5. Objetivo-C, .m/.mm ¿diferencia de rendimiento?
- 6. Diferencia entre paréntesis y corchete en objetivo-c
- 7. ¿Cuándo es (esto! = Esto) en C++?
- 8. diferencia entre el iPhone AES (Objetivo-c) y Java
- 9. Objetivo C. sintaxis extraño
- 10. Objetivo C NSStack y NSQueue?
- 11. Diferencia entre C: y C:/
- 12. ¿Cuál es la diferencia entre $ (esto) y esto en jQuery?
- 13. Ajuste del objetivo C en el objetivo C++/C++
- 14. Objetivo C "#if" sintaxis
- 15. ¿Cuál es la diferencia entre Visual C++ y C++?
- 16. ¿Cuál es la diferencia entre Managed C++ y C++/CLI?
- 17. ¿Cuál es la diferencia entre C y C incrustado?
- 18. ¿Cuál es la diferencia entre C++ administrado y C#?
- 19. ¿Cuál es la diferencia entre "k means" y "fuzzy c means" funciones objetivo?
- 20. ¿Qué es "->" en el Objetivo C?
- 21. Objetivo C Boolean Array
- 22. Diferencia entre las clases parciales C# y Objective C?
- 23. ¿Qué es NSBundle y mainBundle en el objetivo C?
- 24. Objetivo C: Delegados múltiples
- 25. ¿Qué es dealloc en el objetivo C
- 26. Objetivo-c: NSString es posible enumerar los
- 27. Objetivo C: ¿qué es un "remitente (id)"?
- 28. Diferencia entre esto y la base
- 29. C y C++ diferencia en sizeof ('x')
- 30. Diferencia entre los atributos de propiedad en el objetivo-c
¿Qué le dicen sus referencias de Objective-C y C++? – GManNickG
posible duplicado de [Asignar a sí mismo en Objective-C] (http://stackoverflow.com/questions/1341734/assigning-to-self-in-objective-c) –
Kirill V. Lyadvinsky: No es un duplicado de eso pregunta. El interlocutor allí ya entendió la respuesta a esta pregunta. – JeremyP