Entonces, solo una simple pregunta, cuando debería usar copy en lugar de usar retener. Traté de mirar desde Internet, pero no lo entendí del todo. Entonces, ¿podría alguien aclararme?Objective C copie y conserve
Respuesta
Utilizará copy
cuando desee garantizar el estado del objeto.
NSMutableString *mutString = [NSMutableString stringWithString:@"ABC"];
NSString *b = [mutString retain];
[mutString appendString:@"Test"];
En este punto, b estaba arruinado por la tercera línea.
NSMutableString *mutString = [NSMutableString stringWithString:@"ABC"];
NSString *b = [mutString copy];
[mutString appendString:@"Test"];
En este caso, b es la cadena original y no está modificada por la 3ra línea.
Esto se aplica a todos los tipos mutables.
Vale la pena señalar que muchos tipos inmutables implementarán -copy llamando a -retain; Dado que su valor nunca cambiará, no tiene sentido tener dos copias en la memoria. Dicho esto, sin información adicional, siempre debe codificar como si no supiera si un objeto en particular es mutable o no. El hecho de que escriba su propiedad como NSString no significa que alguien no le pase una NSMutableString (como se ilustra arriba). – ipmcc
La copia es útil cuando no desea que el valor que recibe cambie sin que usted lo sepa. Por ejemplo, si tiene una propiedad que es NSString
y confía en que esa cadena no cambia una vez que está configurada, debe usar copiar. De lo contrario, alguien puede pasarle un NSMutableString
y cambiar el valor que a su vez cambiará el valor subyacente de su NSString
. Lo mismo ocurre con NSArray
y NSMutableArray
, excepto que la copia en una matriz solo copia todas las referencias de puntero a una nueva matriz, pero evitará que las entradas se eliminen y añadan.
conservar: Se realiza en el objeto creado, y solo aumenta el recuento de referencias.
copia - Crea un objeto nuevo y cuando se crea un objeto nuevo, se conserva la cuenta será 1. Espero que esto pueda ayudarlo.
- 1. Copie NSView en cocoa/objective-c
- 2. Copie una imagen y conserve sus datos EXIF / IPTC con PHP imageCreateFromJpeg?
- 3. Objective-C y MySQL
- 4. Objective-C y símbolos ** + -
- 5. Android y Objective-C
- 6. Emacs, Objective-C, y autocompletar
- 7. Objective C - miembros y constantes
- 8. Mezcla de Objective-C y C++
- 9. C vs C++ (Objective-C vs Objective-C++) para iPhone
- 10. alloc, inicio y nuevo en Objective-C
- 11. Objective-C y uso de SEL/IMP
- 12. diferencia entre + y - métodos en Objective-C
- 13. Objective C Matriz y objeto Release
- 14. Desbloqueo personalizado y ARC (Objective-C)
- 15. Objective-C Propiedades y Gestión de memoria
- 16. Objective-C: diferencia entre id y void *
- 17. Objective-C y sqlite's DATETIME tipo
- 18. Dividir int y redondear en Objective-C
- 19. Objective-C y UML de modelado
- 20. Categorías de Doxygen y Objective-C
- 21. Biblioteca Objective-C para amanecer y atardecer?
- 22. Categoría Objective-C y nueva iVar
- 23. Objective-C propiedad y sintetizar lógica
- 24. Cortos y útiles fragmentos de Objective-C?
- 25. C++ copie un objeto de secuencia
- 26. Copie archivos al portapapeles en C#
- 27. Mezcla C# con Objective-C
- 28. Eliminar una carpeta y sus subcarpetas en Objective-C/C
- 29. Diferencia entre las clases parciales C# y Objective C?
- 30. Programación Objective-C: ¿Aprenderá C y/o Smalltalk Ayuda?
posible duplicado de [propiedad de NSString: ¿copiar o conservar?] (Http://stackoverflow.com/questions/387959/nsstring-property-copy-or-retain) o [Objective C Assign Copy Retain] (http://stackoverflow.com/questions/4510913/) o [Retener copia de objetos liberados automáticamente] (http://stackoverflow.com/questions/6416963/) o [Cuándo usar retener y cuándo usar copia] (http: // stackoverflow .com/questions/4087208 /) o [@property: ¿Conservar o copiar?] (http://stackoverflow.com/questions/5616170/) o [muchos otros] (http://stackoverflow.com/search?q= % 5Bobjc% 5D + copy + retener) –
En esta defensa de preguntas, las demás son todas específicas de los tipos de propiedad, pero sí, esta pregunta se ha hecho mucho. –