【问题标题】:NSString stringWithFormat is slowNSString stringWithFormat 很慢
【发布时间】:2012-11-26 16:20:21
【问题描述】:

在 Objective-C 中,方法 stringWithFormat: 似乎非常慢,实际上是我们的一个应用程序中的一个大瓶颈(我们使用分析器来发现这一点)。 有没有办法对其进行优化或使用一些更快的 C 代码?

【问题讨论】:

  • 没有看到你的任何代码我们怎么知道?
  • 解释格式字符串本身就很慢。如果您可以使用其他技术,并且性能是一个问题,那么请继续。 (而且,为了大声哭泣,不要使用像 myString = [NSString stringWithFormat:@"%@", "ABC"]; 这样的东西,因为我在这里见过很多次。这完全是浪费动作!)
  • 你不会使用像NSString *str = [NSString stringWithFormat:@"%@", otherString]; 这样的延迟代码吗?我在stackoverflow上看到了很多这样的例子......
  • @HotLicks 伟大的思想......
  • (给我们两三个你使用stringWithFormat的例子。)

标签: iphone objective-c ios c nsstring


【解决方案1】:

是的 在 c http://www.cplusplus.com/reference/cstdio/sprintf/ 中使用 sprintf 之后使用[NSString stringWithUTF8:]; 将 char* 推送到 NSString 中

示例:

char cString[255];
sprintf (cString, "%d", 36);
NSString* OCstring = [[NSString alloc] initWithUTF8String:cString];

【讨论】:

  • 寻找 stringWithFormat 的通用插入式替代品...比看起来更难!
  • @JMBise 之后我需要释放 char 数组吗?
  • @Danpe 不,您不需要释放 char 数组,因为它不是指针。它将在函数结束时(如果在函数内部)或每次循环运行后(如果在循环内部)自动释放
【解决方案2】:

如果您正在进行大量的字符串操作和操作 - 听起来您可能正在这样做,而 NSString 确实正在成为您的应用程序的瓶颈,我建议您尝试使用 C++ 而不是 C 来满足您的字符串需求.

Apple 承认虽然NSString 很棒,但它是顶级的,事实上,为了让他们的 iOS 自动更正算法遇到类似的问题,NSString 太慢了,无法计算和比较这么多东西。然后他们切换到 C++ 并获得了他们需要的所有性能。

只是一个建议。你绝对应该提供一些代码,我很惊讶这会发生在你身上,除非你正在做一些很棒的新功能!

【讨论】:

  • 中间段落的来源?
  • 它出现在 WWDC 2012 视频中。我要绞尽脑汁想现在是哪一个。待定。
  • 谢谢。如果你记得那是哪一个,我很想看那个视频。
  • 好的:第 212 节基础知识 + 习惯:让您的软件经久耐用 - 13 分钟。 developer.apple.com/videos/wwdc/2012/?include=212#212
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
  • 2015-06-02
相关资源
最近更新 更多