如何在目标c中调用此方法

时间:2012-06-20 12:12:21

标签: iphone objective-c ios function methods

我已经在这个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")]; 但它给出语法错误,任何人都可以帮助我

3 个答案:

答案 0 :(得分:8)

首先,它不是method,它是C function,类似于NSLog,因此请使用它:

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

C风格的功能有优点和缺点,我会尝试在这里列出一些:

优点:

  • 速度。 C函数几乎总是比等效的objective-c方法快,因为调用函数不需要动态调度

  • 指针。获取指向C风格函数的指针比使用Objective-C方法容易得多,这使得它更适合于C API回调

缺点:

  • IVARS。在C函数中,不能访问对象的私有变量(即使引用它),而不使用运行时向导,此时,它确实不值得。

  • 没有self的概念。您不能在C函数中使用self(或_cmd)变量,因为每个C函数都独立于产品中的其他函数。

答案 1 :(得分:0)

您可以这样称呼它:ReplaceFirstNewLine(@"");

答案 2 :(得分:0)

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

现在你应该能够像方法一样调用它:

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