Cómo manejar adecuadamente los objetos CF creados al principio del programa y eliminados al final
pongo
Declaré@property (nonatomic) ABAddressBookRef addressBook;
como la propiedad de la extensión de clase
-(void)dealloc
{
[[NSNotificationCenter defaultCenter]removeObserver:self];
CFRelease(self.addressBook);
}
Luego, en una función SOLO llamada por viewDidLoad, agrego: - (void) vCreateAddressBookAndPopulateContact
{
self.addressBook = ABAddressBookCreate(); //will be released at dealloc
[self vPopulateContact];
}
Me da una advertencia: en la asignación:
Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
En la dislocación:
Incorrect decrement of the reference count of an object that is not owned at this point by the caller
¿Entonces qué debo hacer? ¿Cómo decirle a ese compilador que el objeto no se referenciará más adelante en dealloc?
Me gustaría poder mover esa propiedad ABAddressBookRef a ARC / NS land. Pero no hay manera de hacerlo.
self.addressBook no se puede liberar en la función. Eso es porque si quiero añadir o eliminar.