2012-06-20 42 views
1

我已經在此Stackoverflow中看到了此代碼塊,作爲某些問題的答案,我試圖暗示在我的代碼中,但我沒有得到這種方式的功能我可以調用如何在目標c中調用此方法c

NSString * ReplaceFirstNewLine(NSString * original) 
{ 
    NSMutableString * newString = [NSMutableString stringWithString:original]; 

    NSRange foundRange = [original rangeOfString:@"\n"]; 
    if (foundRange.location != NSNotFound) 
    { 
     [newString replaceCharactersInRange:foundRange 
           withString:@""]; 
    } 
    NSLog(@"%@",newString); 
    return [[newString retain] autorelease]; 
} 

我試圖把這種喜歡[self ReplaceFirstNewLine(@"\nstirng\nstring")]; 但它給人的語法錯誤,任何一個可以幫助我

回答

8

首先,它不是一個method,這是一個C function,類似於NSLog,因此請使用它:

NSString *results = ReplaceFirstNewLine(@"\nstirng\nstring"); 
NSLog(@"%@", results); 

C風格的函數都有優點和缺點,我會嘗試列出其中一些在這裏:

優點:

  • 速度。 C函數幾乎總是比等效的objective-c方法更快,因爲不需要動態調度來調用函數

  • 指針。這是很容易得到一個指向一個C風格的功能比它是一個Objective-C的方法,這使得它更適合於C API回調

缺點:

  • 高德。在C函數中,不能使用訪問對象的私有變量(即使引用它),而不使用運行時嚮導,在這一點上,它確實不值得。

  • 沒有概念self。您不能在C函數中使用self(或者_cmd)變量,因爲每個C函數都獨立於產品中的其他函數。

+0

@理查德thanx的烏拉圭回合的答覆 – Ravi

+0

@Richard莫非你請告訴我這是一種什麼樣的功能。我只知道類的方法 - (NSString)replaceFirstNewLine {....};它似乎是C風格的功能。您能否提供一些我可以參考的資源。提前致謝。 – rakeshNS

+0

@Ravi歡迎您。不過,不要忘了投票並接受答案!它可以幫助其他人更容易找到。 –

0

你會這樣稱呼它:ReplaceFirstNewLine(@"");

0
- (NSString *) ReplaceFirstNewLine(NSString * original){ 
    //... 
} 

現在你應該安倍調用它的方法:

[self ReplaceFirstNewLine(@"\nstirng\nstring")];