2013-12-13 3 views
0

У меня есть игра с маленьким консольным окном, в котором отображаются текстовые сообщения о событиях, которые происходят в игре. Эта консоль - UITextView, по одному сообщению в строке. Код, который у меня ниже, работает для тестирования, но в течение игры я ожидаю, что этот журнал вырастет до очень долгого.iOS Как реализовать длинные, прокручиваемые функции журнала в приложении?

Что такое эффективная практика для ведения видимого пользователем ведения журнала в iOS-игре? Это табличный вид, какой-то пользовательский класс, изменяемая строка, чтение/запись в файл и т. Д.?

-(void)updateConsoleWithMessage:(NSString*)message 
{ 
    messageConsole.text = [NSString stringWithFormat:@"%@\n%@",message,messageConsole.text]; 

     if(messageConsole.text.length > 0) { 
      NSRange top = NSMakeRange(0, 1); 
      [messageConsole scrollRangeToVisible:top]; 
     } 

} 
+0

использование Cocoa LumberJack. Это помогает легко извлекать журналы из сборки. –

ответ

1

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

1

Я думаю, что очередь будет лучше.

Создайте очередь (NSMutableArray) и создайте объект, в котором вы можете добавить сообщение. Теперь в цикле (NSTimer) с определенными циклами (например, каждые 3 секунды) - отображает первое сообщение в очереди (поп). В следующем цикле просто замените сообщение следующим.

Вы также можете расширить его, чтобы он отображал более 1 сообщения (например, 3, если это возможно) и после определенного периода времени через следующие.

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

Если вы хотите использовать ведение журнала во время разработки, я настоятельно рекомендую использовать проект NSLogger (https://github.com/fpillet/NSLogger) - он позволяет вам отлаживать фоновый рисунок, а не использовать какое-либо пространство на экране в то же время, упрощая фильтрацию различных типов, уровней и т. д.

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