2012-02-14 17 views

Respuesta

15

El comportamiento que asigna determina cómo se gestiona la memoria para el tipo. Si elige retener o copiar, el objeto se liberará cuando se desasigne la instancia de la clase a la que agrega la referencia asociada. Eso hace que se retengan y copien las operaciones de comportamiento preferidas para las clases Objective-C. Asignar también es útil para evitar retener ciclos siempre que establezca la referencia en cero cuando se hace con el objeto.

Constantes

OBJC_ASSOCIATION_ASSIGN Especifica una referencia débil para el objeto asociado .

OBJC_ASSOCIATION_RETAIN_NONATOMIC Especifica una fuerte referencia al objeto asociado, y no que la asociación es hizo atómicamente.

OBJC_ASSOCIATION_COPY_NONATOMIC Especifica que el objeto asociado se copia, y que la asociación no se hace atómicamente.

OBJC_ASSOCIATION_RETAIN Especifica una referencia fuerte a del objeto asociado, y que la asociación se realiza atómicamente.

OBJC_ASSOCIATION_COPY Especifica que el objeto asociado se copia, y que la asociación se realiza atómicamente.

+0

Eso fue rápido :) pero no es la respuesta que estaba buscando. debería tener sido más específico en mi pregunta, sry. – radiospiel

+0

@ra Dije que si Diospiel arriba, retenga o copie liberará el objeto para usted "el objeto será liberado cuando se publique la clase a la que agrega la referencia asociada" – Joe

+0

@JoshCaswell Gracias, ese sería el término correcto. – Joe

2

A pesar de que respondió a su propia pregunta, todavía, ya que no incluyó el texto mismo docs, y la página se ha vinculado a ya no está disponible, aquí es para la conveniencia de los demás:

De Objective-C de tiempo de ejecución de referencia

void objc_removeAssociatedObjects(id object)

de apple Elimina todas las asociaciones para un objeto dado.

El objetivo principal de esta función es hacer que sea fácil para devolver un objeto a un "estado original”. Usted no debe usar esta función para la eliminación general de las asociaciones de objetos, ya que también elimina asociaciones que otra los clientes pueden haber añadido al objeto. Normalmente, usted debe utilizar objc_setAssociatedObject con un valor de cero a clara una asociación.

Cuestiones relacionadas