Bloqueo en ABPeoplePicker cuando se llama desde otro controlador de vista modal y ambos se descartan

(Nota: ya presenté esta pregunta en el contexto de mi proyecto, pero ahora he recreado el bloqueo en un proyecto de prueba. Cualquier ayuda para decirme lo que estoy haciendo mal sería apreciada).

El bloqueo se produce al llamar a ABPeoplePicker desde otro controlador de vista modal. Específicamente, la ventana principal tiene un NavController, que carga myVC. myVC luego carga un NavController modal que contiene mi controlador, que luego llama a ABPeoplePicker. En este programa de demostración, no es necesaria la intervención del usuario hasta que se ejecute ABPeoplePicker.

El bloqueo se produce si utiliza el cuadro de búsqueda en el selector de personas y luego selecciona una de las personas resultantes. (Si usa el simulador, deberá agregar una persona en Contactos antes de ejecutar el programa). El programa regresa, pero durante el rechazo de los dos VC modales, se produce un error de aserción. Ocurre cada vez en iphone, ipad y simuladores para ambos. Esto parece algo muy normal, así que me resulta difícil creer que esto sea un error real. El mensaje de bloqueo es:

Error de aserción en - [ABMembersSearchDisplayController setActive: animated:], /SourceCache/UIKit_Sim/UIKit-1448.69/UISearchDisplayController.m:589 2011-01-31 13: 51: 11.903 testcrasher2 [26044: 207]* Finalización de la aplicación debido a la excepción no detectada 'NSInternalInconsistencyException', razón: 'el controlador de navegación de contenido de búsqueda no debe cambiar entre -setActive: YES y -setActive: NO'

Para demostrar, en una nueva aplicación Xcode iPhone Window, modifiqué didFinishLaunchingWithOptions para llamar a mi controlador. Luego creo dos VC de la siguiente manera. (Tenga en cuenta que necesita agregar marcos de libreta de direcciones al destino). Aquí está el programa completo ...

AppDelegate.didFinishLaunchingWithOptions:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    myViewController *detailViewController = [[myViewController alloc] init];

    // Set the navigation controller as the window's root view controller and display.
    UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController: detailViewController];

    self.window.rootViewController = navController;
    [self.window makeKeyAndVisible];

    [detailViewController release];
    [navController release];

    return YES;
}

myViewController.h:

@interface myViewController :  UIViewController<addDelegate>{
 }
@end

myViewController.m:

#import "myViewController.h"
#import "AddNewViewController.h"        

@implementation myViewController

- (void)controllerDidFinish:(addNewViewController *)controller  {
    [self dismissModalViewControllerAnimated:YES];
}

-(void) viewWillAppear:(BOOL)animated  {
    [super viewWillAppear: animated];

    addNewViewController *addController = [[addNewViewController alloc] init];
    addController.delegate = self;

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:addController];
    [self presentModalViewController:navController animated:YES];

    [navController release];
    [addController release];
}

@end

AddNewViewController.h:

#import <AddressBookUI/AddressBookUI.h>

@protocol addDelegate;

@interface addNewViewController : UIViewController  < ABPeoplePickerNavigationControllerDelegate> {
    id <addDelegate> delegate;  
}
    @property(nonatomic, assign) id <addDelegate> delegate;
@end


@protocol addDelegate <NSObject> 
    - (void)controllerDidFinish:(addNewViewController *)controller ; 
@end

AddNewViewController.m:

#import "AddNewViewController.h"

@implementation addNewViewController

@synthesize delegate;

-(void) viewDidAppear:(BOOL)animated {  
    ABPeoplePickerNavigationController * peoplepicker =  [[ABPeoplePickerNavigationController alloc] init] ;    
    peoplepicker.peoplePickerDelegate = self;
    [self presentModalViewController:peoplepicker animated:YES];
    [peoplepicker release];
}

#pragma mark AddressBook delegate methods

- (void)peoplePickerNavigationControllerDidCancel: (ABPeoplePickerNavigationController *)peoplePicker { 
    [self dismissModalViewControllerAnimated:YES];
}

- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker
      shouldContinueAfterSelectingPerson:(ABRecordRef)person {
    [self.delegate controllerDidFinish:self ];  
    return NO;   //EDIT:  This MUST be YES or it will crash (see answer below)
}

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 
      shouldContinueAfterSelectingPerson:(ABRecordRef)person
      property:(ABPropertyID)property 
      identifier:(ABMultiValueIdentifier)identifier {
    return NO;
}

@end

Respuestas a la pregunta(2)

Su respuesta a la pregunta