【发布时间】:2009-06-22 01:12:56
【问题描述】:
大家好。我有一个每秒被调用的方法,我想用它来显示我的应用程序一直在工作的时间。目前我正在使用的类(我没有创建)有一个名为 progress 的属性,它存储总秒数。
我已经编写了一些代码,这些代码需要几秒钟并将其格式化为可读的字符串。我是新手,如果它不是最好的代码,请原谅我。我欢迎任何建议:
// hours, minutes, and seconds are instance variables defined as integers
int totalSeconds = (int)streamer.progress;
hours = totalSeconds / (60 * 60);
if (hours > 0)
formattedTimeString = [NSString stringWithFormat:@"%d:", hours]; // WRONG
minutes = (totalSeconds / 60) % 60;
seconds = totalSeconds % 60;
[formattedTimeString stringByAppendingFormat:@"%d:%d", minutes, seconds]; // WRONG
基本上我希望它显示为“3:35”,例如显示 3 分 35 秒。我只想显示小时部分,如果它已经是一个小时,在这种情况下它将是“2:3:35”(谁能推荐一种更好的格式化方法?)。
问题是我实际创建/设置字符串的位置(标记为错误的行)。由于这是每秒都在完成,如果我一直要求一个新的字符串对象,我很容易得到泄漏。我想我可以通过在方法结束时释放 foramttedTimeString 来解决这个问题,但这是实现此目的的正确方法吗? NSMutableString 会以任何方式提供帮助吗?有没有更好的可可方式来做到这一点?我已经在#iphonedev@freenode 中询问过,他们说我必须自己编写这个方法,但我想我会再问一次。
提供上下文:这是一个互联网广播流媒体应用程序(我知道已经有很多,但我只是在练习)。我希望能够显示流已播放的时间量。
对不起,如果这个问题很愚蠢,呵呵,就像我说我是新手一样。
【问题讨论】:
标签: iphone objective-c cocoa-touch memory