¿Por qué no hay un grupo de liberación automática cuando realizoSelectorInBackground:?

Llamo a un método que va en un hilo de fondo:

[self performSelectorInBackground:@selector(loadViewControllerWithIndex:) withObject:[NSNumber numberWithInt:viewControllerIndex]];

then, tengo la implementación de este método que recibe la llamada del selector:

- (void) loadViewControllerWithIndex:(NSNumber *)indexNumberObj {
    NSAutoreleasePool *arPool = [[NSAutoreleasePool alloc] init];
    NSInteger vcIndex = [indexNumberObj intValue];

    Class c;
    UIViewController *controller = [viewControllers objectAtIndex:vcIndex];

    switch (vcIndex) {
        case 0:
            c = [MyFirstViewController class];
            break;
        case 1:
            c = [MySecondViewController class];
            break;
        default:
            NSLog(@"unknown index for loading view controller: %d", vcIndex); // error
            break;
    }

    if ((NSNull *)controller == [NSNull null]) {
        controller = [[c alloc] initWithNib];
        [viewControllers replaceObjectAtIndex:vcIndex withObject:controller];
        [controller release];
    }

    if (controller.view.superview == nil) {
        UIView *placeholderView = [viewControllerPlaceholderViews objectAtIndex:vcIndex];
        [placeholderView addSubview:controller.view];
    }

    [arPool release];
}

Aunque creo un grupo de liberación automática allí para ese hilo, siempre aparece este error:

2009-05-30 12:03:09.910 Demo[1827:3f03] *** _NSAutoreleaseNoPool(): Object 0x523e50 of class NSCFNumber autoreleased with no pool in place - just leaking
Stack: (0x95c83f0f 0x95b90442 0x28d3 0x2d42 0x95b96e0d 0x95b969b4 0x93a00155 0x93a00012)

Si elimino el grupo de liberación automática, recibo un montón de mensajes como estos. También intenté crear un grupo de liberación automática alrededor de la llamada de performSelectorInBackground :, pero eso no ayuda.

Sospecho el parámetro, pero no sé por qué el compilador se queja de un NSCFNumber. ¿Me estoy perdiendo de algo

Mis variables de instancia son todas "no atómicas". ¿Puede ser eso un problema?

UPDATE: también puedo sospechar que se ha agregado alguna variable a un grupo de liberación automática del subproceso principal (tal vez un ivar), ¿y ahora intenta liberar esa dentro del grupo de liberación automática incorrecta? Si es así, ¿cómo podría solucionarlo? (maldición, este tema es complejo;))

Respuestas a la pregunta(4)

Su respuesta a la pregunta