【问题标题】:plus (+) versus minus (-) in objective-c [duplicate]Objective-c中的加号(+)与减号(-)[重复]
【发布时间】:2012-06-08 18:20:16
【问题描述】:

可能重复:
What do the plus and minus signs mean in Objective C next to a method?

在 Objective-C 中使用加号或减号有什么区别?

例如大部分时间码以-(void)somethingSomethingelse开头,但有时会是+(void)somethingSomethingelse

谢谢!

【问题讨论】:

    标签: objective-c ios


    【解决方案1】:

    - 函数是实例函数,+ 函数是类(静态)函数。

    假设您有一个名为Person 的类,以及以下函数

    -(void)doSomething;

    +(void)doSomethingElse;

    您可以通过以下方式调用这些函数:

    Person *myPerson = [[Person alloc] init];

    [myPerson doSomething];

    [Person doSomethingElse];

    这更像是一个语法描述,假设您了解类与实例的概念。

    编辑:

    补充一点:在 Objective-C 中,您实际上可以在实例上调用类函数,但效果与在类本身上调用它没有什么不同(本质上编译成相同的东西)。

    所以你可以这样做

    [myPerson doSomethingElse]

    一般情况下,您不会这样做,因为它会造成混淆和误导性阅读。我指出这一点,所以如果你在某处遇到这样的代码,你不会感到惊讶。

    【讨论】:

      【解决方案2】:

      简而言之,(+) 是类方法,(-) 是实例方法

      查看这个答案以获得完整的解释 What is the difference between class and instance methods?

      【讨论】:

        【解决方案3】:

        分别是成员和公共函数。

        这样

        id object = [[NSObject alloc] init];
        + (id)alloc;
        - (id)init;
        

        其中 NSObject 是一个类,id 是一个对象

        如果你曾经使用过 C++,a + 相当于 static

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-05
          • 1970-01-01
          • 1970-01-01
          • 2023-03-04
          • 1970-01-01
          • 1970-01-01
          • 2015-01-11
          • 1970-01-01
          相关资源
          最近更新 更多