目前我正在研究一款軟件,該軟件目前使用iPhone 3.0 SDK在Objective-C中編寫爲100%。Objective-C字符串操作
我已經來到了一個十字路口,我需要做相當多的或字符串連接,更具體地說,NSString的級聯和到目前爲止,我一直在做這樣的:
Objective-C的字符串連接:現在
NSString *resultantString = (NSMutableString*)[@"Hello " stringByAppendingString: @"World"];
,你可以想像這變得相當困難,當我試圖串聯6個NSString的共同閱讀。
起初我設想一個Objective-C++類混合做我的字符串連接,並交回給我的Objective-C類的話,我可以使用C++的簡單的字符串連接,如:
C++字符串連接:
string cppString = "Hello" + "World" + "see" + "easy!";
我可以使用ç字符數組,但是這將是一個小更難以閱讀。
然後,它讓我感到我可以在Cocoa中使用Python或Ruby橋(它提供了正則表達式和卓越的字符串處理比C語言的額外好處)。
即使我只編寫了少量的Ruby和Python,這對我來說也是有意義的,因爲它們被稱爲字符串操作語言。 Perl我決定跳過,因爲它在Xcode中不直接支持。
我也對性能感興趣,所以我正在尋找最快的方式來做我的字符串連接。
那我該怎麼辦?有沒有一些狡猾的簡單方法,我在Objective-C中錯過一次說10個字符串連接很多字符串?或者我的想法是使用Python或Ruby類方法返回連接的或正則表達式的修改過的字符串,而不是聽起來那麼令人難以置信的瘋狂?也許我甚至錯過了另一種方式來做到這一點?
更新: 是的。看起來我想拉動另一個語言運行時來執行字符串操作是非常瘋狂的,特別是因爲我注意到我關心速度。添加一個橋可能會比簡單地使用NSString/NSMutableString慢得多。
我覺得使用一個完整的動態語言運行時只是爲了做字符串連接就像是過度反應,不是嗎? 但我敢肯定,你可以找到其他用途.. – fortran 2009-07-07 18:01:08
我認爲,雖然你可以在iPhone上使用C++,但python和ruby由於'沒有解釋語言'規則而被禁止使用 – cobbal 2009-07-07 18:09:54
@fortran - :)當你這樣說我開始認爲我的2AM理念並不好。我明天會醒來,讀這個問題,並且可能爲了甚至首先考慮這個問題而sla myself自己。 – 2009-07-07 18:14:17