Como reutilizar / reciclar elementos personalizados como o uitableviewcell?

Ao usar o UITableView, podemos reutilizar suas células usando[[ UITableViewCell alloc] initWithStyle: reuseIdentifier:] e[uiTableViewInstance dequeueReusableCellWithIdentifier:] métodos. Isso ajuda a manter a memória sob controle de tabelas enormes, pois apenas algumas células estão disponíveis na visualização em um determinado instante.

Eu quero criar umUIScrollView que tem muitas subvisões. A inserção de todas as subvisões consome muita memória e o tempo inicial que desejo evitar. A API da Apple fornece maneiras de reutilizar esses componentes personalizados (uma UIView ou uma subclasse dele aqui), assim como as visualizações de célula usando um identificador?

Vou criar uma se não houver API, mas tenho algumas dúvidas sobre isso. Por exemplo, para cada nova subvisão, estou definindo sua posição de quadro, após as visualizações anteriores. Como devo atualizar o quadro de cada subvisão durante a reciclagem? Devo excluir e recarregar o conteúdo de cada subvisão à medida que ela é reciclada? Devo fazer todos esses cálculos em outro segmento para evitar rolagem brusca? No total, eu gostaria de ter uma experiência de rolagem suave, como no UITableView, com todo o material reutilizado.

Aqui está um exemplo de código que escrevi até agora:

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

Incluindo subvisões a partir de um método, chamado várias vezes

- (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:
Algumas dicas sobre como a tableview e suas células conseguem isso nos bastidores seriam úteis.

questionAnswers(1)

yourAnswerToTheQuestion