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