iOS如何在应用程序中实现长,可滚动的日志功能?

时间:2013-12-13 20:28:41

标签: ios iphone ipad logging uitextview

我有一个游戏,它有一个小的控制台窗口,显示有关游戏中发生的事件的短信。此控制台为UITextView,每行一条消息。我下面的代码用于测试目的,但在游戏过程中,我希望这个日志会长得很长。

在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];
        }

}

2 个答案:

答案 0 :(得分:1)

我认为队列会更好。

构建一个队列(NSMutableArray)并构建一个可以添加消息的对象。 现在处于具有特定周期的循环(NSTimer)中(例如每3秒) - 显示队列中的第一条消息(Pop)。在下一个周期中,只需用下一个消息替换消息。

您也可以对其进行扩展,使其显示多条消息(例如,如果可能,则为3条消息),并在经过一定时间后显示下一条消息。

我认为这是更好的方法,因为当你玩得更久时它不会变得疯狂(旧的不可见消息将被删除)。在您的方法中,不幸的是,它会随着您添加的每条消息而增长,增长和增长。

如果你想在开发过程中使用日志记录,我强烈建议你使用NSLogger项目(https://github.com/fpillet/NSLogger) - 它允许你在后台调试,而不是同时使用屏幕上的任何空间,以便过滤掉不同的类型,等级等。

答案 1 :(得分:1)

我会使用tableview,因为内存管理非常有效。所以你只有实例化的可见细胞。数据源将是一个以消息作为对象的数组,因此您可以通过此数组控制内存中将有多少消息。