2012-11-26 50 views
4

在Objective-C中,方法stringWithFormat:似乎非常缓慢,实际上是我们其中一个应用程序(我们使用分析器找出的)中的一个大瓶颈。 有没有办法优化它或使用一些更快的C代码?NSString stringWithFormat很慢

+11

我们如何知道没有看到任何代码? – DrummerB

+0

我不是在谈论一个特定的代码。我正在谈论的行[NSString stringWithFormat] – AJ222

+0

你如何识别它作为你的应用程序的瓶颈? – nhahtdh

回答

8

是 使用sprintf在C http://www.cplusplus.com/reference/cstdio/sprintf/ 后推的char *中的NSString与[NSString stringWithUTF8:];

例如:

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

寻找stringWithFormat的通用嵌入式替代品...比它看起来更难! – SG1

+0

@JMBise之后我需要释放char数组吗? – Danpe

+0

@Danpe不,你不需要释放char数组,因为它不是一个指针。它将在函数结束时自动释放(如果函数在函数内部),或者每次运行循环后(如果它在循环内部),它会自动释放 – JMBise

6

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

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

只是一个建议。你一定要提出一些代码,我很惊讶这发生在你身上,除非你正在做一些很棒的新功能!

+0

中间段的源代码? –

+2

这是在WWDC 2012视频。我会绞尽脑汁,为了现在这样做。 TBC。 – Daniel

+0

谢谢。如果您记得它是哪一个,我有兴趣观看该视频。 –

相关问题