2012-11-26 62 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

謝謝。如果您記得它是哪一個,我有興趣觀看該視頻。 –

相關問題