2010-12-03 5 views
1

У меня есть singleton, у которого есть NSArray, который создается, когда первый экземпляр синглтона. Когда я должен сохранить этот массив на диске, в методе dealloc? Я проверил документы Apple, и в нем говорится, что вы действительно не должны в dealloc, но не можете сказать, где. Так я собираюсь писать на диск каждый раз, когда массив изменяется? Это кажется пустой тратой?сохранение массива на диск в одноэлементном

ответ

3

В общем, вы должны сохранить состояние, близкое к моменту изменения состояния. Если размер состояния, который вы сохраняете, очень мал, вы можете подождать, пока не будет вызван делегирование приложения -applicationWillResignActive: method. Или вы могли бы зарегистрировать singleton в NSNotificationCenter для наблюдения за UIApplicationWillResignActiveNotification. И затем сохраните.

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

У вас есть хорошее представление о максимальном объеме данных, которые могут потребоваться для написания? Это ограничение или оно открыто?

+0

Ну, каждый раз, когда пользователь переупорядочивает ячейки в таблицеView (и на самом деле есть 2 NSArrays), массивы в singleton получают обновленные, чтобы соответствовать, пользователь, вероятно, будет изменять порядок более чем одной строки за раз, но он будет вызван для каждая строка перемещена, поэтому я не хочу, чтобы пользователь перемещал строку, приложение сохранялось на диск, пользователь переместил другую строку в миллисекунду позже и снова должен был сохранить на диск и т. д. – 2010-12-03 21:43:39

Смежные вопросы