msgstr "сообщение отправлено на освобожденный экземпляр" - не удается найти способ сохранить. - PullRequest
3 голосов
/ 14 февраля 2012

У меня есть вид прокрутки с управлением подкачкой.Он загружает несколько страниц в соответствии с массивом, и каждая страница имеет свое табличное представление.

   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++;

    }

.h файл:

#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

UITableView, хотя и возвращает

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

(изначально это был EXEC_BAD_ACCESS, но получил это с NSZombiesEnabled)

Я не знаю, как поступить, я думаю, что я должен сохранить tasks, но как?

1 Ответ

6 голосов
/ 14 февраля 2012

При добавлении вида контроллера представления в качестве подпредставления вида, которым вы управляете, необходимо сохранить контроллер. сохраните его как свойство с помощью retain / strong или массива контроллеров представления, если их много

в этом случае добавление представления в качестве подпредставления сохранило его, поэтому у вас все еще есть ссылка на табличное представление. но контроллер представления был освобожден, поэтому метод источника данных (который является контроллером представления для UITableViewController) отправляется в освобожденный экземпляр

Кроме того, почему вы инициализируете контроллер представления, а затем сразу же создаете его экземпляр из раскадровки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...