1

私はこのStackoverflowのこのコードブロックをいくつかの質問の答えとして見ました、私は私のコードでそれを暗示しようとしましたが、これはどのような関数であり、どのように呼び出すことができますか

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")]; たが、構文エラーが発生しました。

4

3 に答える 3

8

まず第一に、それはではなくmethod、Cfunctionであり、に似ているNSLogので、次のように使用します。

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

Cスタイルの関数には長所と短所があります。ここにそれらのいくつかをリストしてみます。

利点:

  • スピード。AC関数は、関数を呼び出すために動的ディスパッチが必要ないため、同等のObjective-cメソッドよりもほぼ常に高速です。

  • ポインタ。Objective-CメソッドよりもCスタイルの関数へのポインターを取得する方がはるかに簡単であるため、CAPIコールバックに非常に適しています。

短所:

  • iVars。C関数では、ランタイムウィザードを使用せずに、オブジェクトのプライベート変数にアクセスすることはできません(オブジェクトへの参照があっても)。その時点では、実際には価値がありません。

  • の概念はありませんself。各C関数は製品内の他の関数から独立しているため、C関数内でself(または、さらに言えば)変数を使用することはできません。_cmd

于 2012-06-20T12:14:13.070 に答える
0

あなたはそれをこのように呼ぶでしょう: ReplaceFirstNewLine(@"");

于 2012-06-20T12:14:58.273 に答える
0
- (NSString *) ReplaceFirstNewLine(NSString * original){
    //...
}

これで、メソッドのように呼び出すことができます。

[self ReplaceFirstNewLine(@"\nstirng\nstring")];
于 2012-06-20T15:00:31.877 に答える