Intereting Posts
Хранение файла из песочницы в iphone или доступ к файловой системе другими приложениями Эффект AVAssetExportSession и постепенное уменьшение эффекта затухания Single AngularJS для поддержки веб-и мобильных Как запустить iOS simulator 4.3 в Xcode 4.6? Попытка отображения alertView с использованием операторов if / else в iOS NavigationBar без перекрытия статусов перекрывает safearea в iOS11 Отмененная операция все еще запущена В SpriteKit на iOS масштабирование текстурированного спрайта создает неправильный кадр? Моделирование длительной экспозиции iOS Почему я не могу случайным образом установить цвета из массива цветов в tableViewCells? Сохранить функцию в NSUserDefaults в Swift Как указать значки для универсального приложения iPhone / iPad? Не разрешено, пропуская приложение предиката фильтра Удалено по умолчанию png теперь Сбой сборки Есть ли успех, связанный с использованием UIImageViews разного размера / масштаба, чем фактическое изображение?

Где лучше хранить экземпляр объекта источника данных в представлении таблицы?

Я хотел бы иметь отдельный класс, который соответствует протоколу UITableViewDataSource и работает с объектами данных. Где лучше сохранить, выделить и инициализировать экземпляр этого класса? Если я это сделаю в ViewDidLoad подкласса Control View Table, который подключен к Storyboard, экземпляр источника данных освобождается после завершения метода ViewDidLoad .

 - (void)viewDidLoad { [super viewDidLoad]; MyTableViewDataSource* myDataSource = [[MyTableViewDataSource alloc] init]; self.tableView.dataSource = myDataSource; } // self.tableView.dataSource is deallocated 

Будет ли лучшим решением создать сильное свойство объекта источника данных в подклассе Control View Table, связанного с раскадрой, а затем выделить и инициализировать экземпляр источника данных в ViewDidLoad ?

 @interface MyTableVC : UITableViewController @property (strong, nonatomic) MyTableViewDataSource *myDataSource; @end - (void)viewDidLoad { [super viewDidLoad]; self.myDataSource = [[MyTableViewDataSource alloc] init]; self.tableView.dataSource = myDataSource; } 

Причина, по которой он отменяется, заключается в том, что UITableView не сохраняет его:

 @property(nonatomic, assign) id< UITableViewDataSource > dataSource ^^^^^^ 

Это нормально с делегатами, чтобы избежать сохранения циклов.

Поэтому, если вы хотите создать новый объект для работы в качестве источника данных, вам нужно будет сохранить его в соответствии с вашим вторым фрагментом кода.