"Mensaje enviado a la instancia desasignada": no se puede encontrar una forma de retener.

Tengo una vista de desplazamiento con control de búsqueda. Carga varias páginas de acuerdo con una matriz y cada página tiene su vista de tabla.

for(id name in categories) { NSLog(@"Loading Page.%i",i); NSLog(@"categories count:%i",[categories count]); TasksPageViewController *tasks = [[TasksPageViewController alloc] init] ; tasks = [self.storyboard instantiateViewControllerWithIdentifier:@"TasksPageViewController"]; CGRect frame = scrollView.frame; frame.origin.x = frame.size.width * i; frame.origin.y = 0; tasks.view.frame = frame; [tasks populateWithData:(i-1) categoryName:name]; [self.scrollView addSubview:tasks.view]; i++; } 

el file .h es:

 #import <UIKit/UIKit.h> #import "MainPageViewController.h" #import "TasksPageViewController.h" @interface ViewController : UIViewController{ UIScrollView *scrollView; IBOutlet UIPageControl *pageControl; // To be used when scrolls originate from the UIPageControl BOOL pageControlUsed; } @property (nonatomic, strong) IBOutlet UIScrollView *scrollView; @property (nonatomic, strong) IBOutlet UIPageControl *pageControl; - (void)scrollViewDidScroll:(UIScrollView *)scrollView; - (IBAction)changePage; @end 

Sin embargo, UITableView está regresando

*** -[TasksPageViewController tableView:numberOfRowsInSection:]: message sent to deallocated instance 0x68efac0

(originalmente era un EXEC_BAD_ACCESS , pero obtuvo esto con NSZombiesEnabled)

No sé cómo proceder, creo que tengo que retener las tasks pero ¿cómo?

Cuando agregue la vista de un controller de vista como una subvista de una vista que usted controla, debe conservar el controller. guárdelo como una propiedad con retain / strong, o una matriz de controlleres de vista si hay muchos de ellos

en este caso, agregar la vista como una subvista lo ha conservado, por lo que todavía tiene una reference a la vista de tabla. pero el controller de vista se ha desasignado, por lo que el origen de datos (que es el controller de visualización para UITableViewController) se envía a una instancia desasignada

Además, ¿por qué inicializas el controller de vista y luego instantáneamente instálalo desde el guión gráfico?