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

Rav*_*avi 1 iphone methods function objective-c ios

我已经看到这个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];
}
Run Code Online (Sandbox Code Playgroud)

我试图称之为,[self ReplaceFirstNewLine(@"\nstirng\nstring")]; 但它给出语法错误,任何人都可以帮助我

Ric*_*III 8

首先,它不是a method,它是C function,类似于NSLog,所以请使用它:

NSString *results = ReplaceFirstNewLine(@"\nstirng\nstring");
NSLog(@"%@", results);
Run Code Online (Sandbox Code Playgroud)

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

好处:

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

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

缺点:

  • 高德.在C函数中,您无法访问对象的私有变量(即使是对它的引用),而不使用运行时向导,此时,它确实不值得.

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