【问题标题】:How to call this method in objective c如何在目标 c 中调用此方法
【发布时间】:2012-06-22 13:46:27
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c ios function methods


    【解决方案1】:

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

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

    C-style-functions 有优点和缺点,我将尝试在此处列出其中的一些:

    优点:

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

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

    缺点:

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

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

    【讨论】:

    • @Richard 请问这是什么功能。我只知道类型的方法 -(NSString)replaceFirstNewLine{ .... };它似乎是 C 风格的函数。您能否提供一些我可以参考的资源。提前致谢。
    • @Ravi 欢迎您。不过,不要忘记投票并接受答案!它可以帮助其他人更轻松地找到这一点。
    • @Ravi 我的回答还不够吗?如果您不了解 C 函数是什么,我会拿起一本关于 C 的书,将 Objective-c 元素放在您的脑后。这是一项艰巨的任务,无法在一个答案中涵盖。
    • 是的,我只能在 10 分钟后接受 na(stack oveflw rule :-)),我们可以从其他类调用它吗?
    • 是的,如果函数不是静态的,你可以给它添加一个转发引用。 stackoverflow.com/questions/2575153/…
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      - (NSString *) ReplaceFirstNewLine(NSString * original){
          //...
      }
      

      现在你应该把它当成一个方法来调用了:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-31
        • 2012-01-27
        • 1970-01-01
        • 2019-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多