¿Es necesario utilizar "yo" en Objective-C o tal vez solo una buena práctica? He pasado de usarlo todo el tiempo para no usarlo en absoluto y no parece notar ninguna diferencia. ¿No está solo implicado de todos modos?¿Es necesario "ser uno mismo"?
Respuesta
self
es necesario si se desea para un objeto de enviar mensajes a, bueno, es self
. También es útil en ocasiones acceder a propiedades a través de getters/setters, en cuyo caso también deberá utilizar self
, como en self.propertyname
o self.propertyname = value
. (Estos no son equivalentes a propertyname
o propertyname = value
.
No es necesario cuando se hace referencia a variables de instancia. Es necesario cuando se quiere pasar una referencia del objeto actual a otro método, como la hora de establecer un delegado:
[someObj setDelegate:self];
También es necesario cuando se llama a un método en la misma clase de objeto actual:
[self doMethod]
Al asignar a variable de instancia, es necesario usar self si confía en que el setter copie o retenga. –
Sí, porque Objetivo C no tiene método llama como C/C++, pero utiliza el envío de mensajes, sin asistencia, en contextos como
[auto doSomething]; y self.myProperty;
son necesarios.
Si está accediendo a un ivar, no es necesario.
Espero que ayude.
-CV
Para manejar las variables, depende. Si desea usar un getter o setter sintetizado, use la notación de puntos con self.
self.someProperty = @"blah"; //Uses the setter
someProperty = @"blah"; //Directly sets the variable
Tenga en cuenta que no tiene que usar la notación de puntos. Pero a muchos nos gusta. Sin embargo, te lo advierto: la notación de puntos casi parece que estás accediendo a un campo desde una estructura no apuntadora, en lugar de enviar un mensaje a un objeto. Debido a que los objetos de Objective-C son punteros a las estructuras, 'self.someiVar = @" this "' no puede acceder a una variable de instancia; usted usaría 'self-> someiVar = @" this "' (el bit 'self->' no es necesario en la implementación de una clase). Entonces, use la notación de puntos si comprende lo que está haciendo y lo que no está haciendo. –
podía comprender que no es necesario cada vez, pero es una buena práctica, ya que hace que sea más fácil para otras personas a leer su código.
y es necesario cuando se tiene objetos con el mismo nombre en diferentes clases, entonces el keywork "sí" le dirá a su software que se hace referencia al objeto de la misma clase.
que por lo general happends en proyectos más grandes.
- 1. ¿Al usar KVO es necesario eliminar a uno mismo como un observador de sí mismo en -dealloc?
- 2. Modificar uno mismo, Ruby
- 3. ¿Es una mala práctica usar uno mismo en decoradores?
- 4. ¿Cuál es la diferencia entre uno mismo y la ventana?
- 5. ¿Es necesario KillTimer?
- 6. ¿Mala práctica para retener a "uno mismo"?
- 7. string.c_str() ¿es necesario desasignar?
- 8. GLES2 ¿Es glBindAttribLocation() necesario?
- 9. ¿Es necesario volátil aquí?
- 10. Cómo Zip uno IEnumerable consigo mismo
- 11. Fuente de ahorro de uno mismo (PHP)
- 12. ¿Es realmente necesario KillTimer?
- 13. jquery - ¿Es $ (documento) necesario?
- 14. ¿Es realmente necesario CDATA?
- 15. ¿Cuándo es necesario deshacerse?
- 16. ¿Es necesario AssemblyInfo.cpp?
- 17. ¿Es necesario liberar el ivar y establecer el ivar sintetizado en cero al mismo tiempo?
- 18. Esquema XML para "uno o más de estos elementos pero debe ser al menos uno"
- 19. ¿es necesario validar $ _SERVER ['REMOTE_ADDR']?
- 20. ¿Es necesario > alguna vez?
- 21. System.Runtime.Caching.MemoryCache - es necesario el bloqueo
- 22. ¿Es necesario el prefijo khtml?
- 23. Java: ¿Es necesario sincronizar un ExecutorService?
- 24. ¿Es necesario declarar una AtomicReference como volátil?
- 25. ¿Es necesario anidar objetos con objetos IDisposable?
- 26. ¿Por qué es necesario un segundo cin.ignore()?
- 27. Cartografía NHibernate uno a uno donde los datos de la segunda tabla pueden ser nulos
- 28. ¿es necesario liberar un NSInteger en iphone?
- 29. ¿Es necesario devolver un valor en Main()?
- 30. ¿Es necesario esperar() después de usar Task.Factory.StartNew()?
¿Quiere decir ¿va de 'self.property = value' a solo 'property = value'? – JBRWilkinson