2012-04-18 11 views
10

estoy estudiando la programación de iOS.¿Cuándo uso CFRelease?

escribí un código que asociaba una dirección.

hay tantos métodos. como

estoy dividiendo un grupo.

aquí es el grupo 1

ABAddressBookCreate(); 
ABRecordCopyCompositeName(argument); 
ABRecordCopyValue(argument1, argument2); 
ABRecordCopyValue(argument1, argument2); 
ABMultiValueCopyLabelAtIndex(argument1, argument2); 
ABMultiValueCopyValueAtIndex(argument1, argument2); 

y otra es aquí, grupo2

CFArrayGetCount(argument); 
CFArrayGetValueAtIndex(argument1, argument2); 
ABMultiValueGetCount(argument); 

Sé que hay muchos otros métodos.

pero me pregunto cuando uso el método CFRelease.

Creo que group2 todos los métodos no hacen CFRelease

debido a que contienen la palabra "Get", no asignado.

y creo grupo1 de todos los métodos tienen que utilizar CFRelease

porque hay una "copia" de cadena.

tengo un libro.

pero se usa CFRelease dos veces.

uno es liberación ABAddressBookCreate()

otro es ABAddressBookCopyPeopleWithName.

todas las demás cosas no usan CFRelease.

así que me pregunto cuando uso CFRelease.

por favor dígame cuando utilizo CFRelease.

Respuesta

9

Si el nombre de la función contiene "Copiar" o "crear", a continuación, es el propietario del objeto, por lo que debe liberarla cuando termine su trabajo con ella. Esto se llama "La regla de crear". Para obtener más información sobre la gestión de memoria para Core Foundation, puede consultar Memory Management Programming Guide for Core Foundation

+0

Oye, tengo el mismo problema. Probablemente estoy lanzando algún objeto de Core Foundation de la manera incorrecta. Quiero preguntar cómo puedo depurar el recuento de retención para cada objeto y saber con certeza que puedo liberarlo. – Sosily

+1

Ejecute el analizador estático y compruebe cada objeto copiado, creado o retenido si se ha lanzado correctamente. – graver

+0

Gracias hombre! ¡ahora está bien! – Sosily

3

Cada vez que crea un objeto Core Foundation o se convierte en el propietario del mismo, debe llamar al CFRelease.

vistazo a la documentación CFMemory management

Cuestiones relacionadas