¿Cómo reutilizar / reciclar elementos personalizados como lo hace uitableviewcell?

Al usar UITableView, podemos reutilizar sus celdas usando[[ UITableViewCell alloc] initWithStyle: reuseIdentifier:] y[uiTableViewInstance dequeueReusableCellWithIdentifier:] métodos Esto ayuda a mantener la memoria bajo control para tablas enormes, ya que solo hay unas pocas celdas en la vista en un instante dado.

Quiero crear unUIScrollView que tiene muchas subvistas Insertar todas las subvistas requiere mucha memoria y tiempo inicial que quiero evitar. ¿Apple API proporciona formas de reutilizar dichos componentes personalizados (una UIView o una subclase de ella aquí) al igual que las vistas de celda usando un identificador?

Crearé uno si no hay API, pero tengo algunas dudas al respecto. Por ejemplo, para cada nueva subvista, estoy configurando su posición de cuadro, después de las vistas previas. ¿Cómo debo actualizar el marco para cada subvista mientras reciclo? ¿Debo eliminar y volver a cargar el contenido de cada subvista a medida que se recicla? ¿Debo hacer todos estos cálculos en otro hilo para evitar el desplazamiento desigual? En general, me gustaría tener una experiencia de desplazamiento suave como en UITableView con todas las cosas de reutilización.

Aquí hay una muestra de código que he escrito hasta ahora:

int numberOfPages = 0;
int pageWidth = 100;
int pageHeight = 100

UIScrollView *myScrollView = //allocate and initialize a scrollview
//set its size to 100 by 100 (width equal to pageWidth)
//set paging enabled for myScrollView

Agregarle subvistas desde un método, que se llama varias veces

- (void) appendSubViewToScrollView {
    UIView *view = //allocate and initialize a view and dump data in it.

    CGRect rect = view.frame;
    rect.size.height = pageHeight;
    rect.size.width = pageWidth;
    rect.origin = CGPointMake(pageHeight * numberOfPages, 0);
    view.frame = rect;

    [myScrollView addSubview:view];

    numberOfPages++;

    [scrollView setContentSize:CGSizeMake(pageHeight * numberOfPages, pageWidth)];

    [view release];
}

Editar:
Sería útil tener una idea de cómo Tableview y sus celdas logran esto detrás de escena.

Respuestas a la pregunta(1)

Su respuesta a la pregunta