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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta