2013-08-15 3 views
1

У меня есть класс TouchDrawView который содержит NSMutableArray *completeLines;. Теперь, когда приложение завершается, я хочу сохранить этот массив в файл (я знаю , как это сделать, я написал его как метод saveArray класса TouchDrawView).Передача данных делегату приложения

Моя проблема в appDelegate, я хочу, чтобы переопределить сказать applicationDidEnterBackground вызвать saveArray метод объекта моего TouchDrawView класса, чтобы сохранить массив файлов, как я уже говорил.

Вы видите мою проблему? Как передать экземпляр TouchDrawView в app delegate, чтобы последний мог вызвать метод saveArray? например,

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 

    [touchDrawViewObject saveArray]; // how to get this object? 

} 

пс. Я пытаюсь избежать одиночных/статических данных до сих пор, просто любопытно, как это можно сделать иначе.

+0

Будет ли быть только один экземпляр TouchDrawView? – sbarow

+1

Не похоже, что вы следуете шаблону проектирования MVC. Данные должны быть ** не ** содержаться в вашем классе вида. – trojanfoe

+0

@trojanfoe: это настраиваемый вид, и я сохраняю строки, которые он должен рисовать в 'drawRect', где еще я бы их сохранил ... –

ответ

1

Вы можете сделать это без подключения к вашему appDelegate, предоставив TouchDrawView уведомление UIApplicationDidEnterBackgroundNotification. Это срабатывает, когда приложение переходит на задний план.

Возможно, вам не нужно иметь разные методы сохранения по всему вашему приложению, но это зависит от того, как ваше приложение построено.

Пример:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(saveMethod:) 
              name:UIApplicationDidEnterBackgroundNotification 
              object:nil]; 
Смежные вопросы