2012-03-21 60 views
3

我在考慮用我自己的代碼包裝經常使用的Cocoa對象選擇器來提高我的打字速度。一個典型的例子是像修剪白色空間選擇: -ObjectiveC執行和打字的類別和速度

[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

我的選擇是: -

(1)包起來的的NSString類,像這樣

- (NSString *)Trim 
{ 
    return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
} 

( 2)將其定義爲一個宏,而不是像這樣

#define TRIM(X) [X stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] 

我寧願上述(1)的選項,但是否有任何績效點擊?

+0

我想任何人讀你的代碼可能會喜歡宏;這樣他們至少可以通過預處理器來運行它,並有機會理解它。你只需要輸入一次,但之後需要多次閱讀。 – 2012-03-21 06:25:13

回答

3

該類別極不可能在性能上產生顯着或顯着的差異。

該類別的方法需要一個額外的消息分發,所以是的,它會比宏慢。但是,ObjC消息分派器是整個操作系統中最優化的代碼位之一 - 它絕不是緩慢的。

但是,如果您多次使用宏,您的代碼大小將增加超過該類別的大小,這可能會帶來更糟的副作用。 (但這不是很多代碼,所以需要很多實例才能產生真正的區別)。

因此,像往常一樣,它完全取決於您的確切情況 - 您必須測量它並看到。如果你真的能夠衡量差異,我會感到驚訝。