我有一个游戏,它有一个小的控制台窗口,显示有关游戏中发生的事件的短信。此控制台为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];
}
}
答案 0 :(得分:1)
我认为队列会更好。
构建一个队列(NSMutableArray)并构建一个可以添加消息的对象。 现在处于具有特定周期的循环(NSTimer)中(例如每3秒) - 显示队列中的第一条消息(Pop)。在下一个周期中,只需用下一个消息替换消息。
您也可以对其进行扩展,使其显示多条消息(例如,如果可能,则为3条消息),并在经过一定时间后显示下一条消息。
我认为这是更好的方法,因为当你玩得更久时它不会变得疯狂(旧的不可见消息将被删除)。在您的方法中,不幸的是,它会随着您添加的每条消息而增长,增长和增长。
如果你想在开发过程中使用日志记录,我强烈建议你使用NSLogger项目(https://github.com/fpillet/NSLogger) - 它允许你在后台调试,而不是同时使用屏幕上的任何空间,以便过滤掉不同的类型,等级等。
答案 1 :(得分:1)
我会使用tableview,因为内存管理非常有效。所以你只有实例化的可见细胞。数据源将是一个以消息作为对象的数组,因此您可以通过此数组控制内存中将有多少消息。