我知道通常,当你想调用另一个对象的方法时,你会这样做:
NewObject *object = [NewObject alloc]init];
[对象调用方法];
但是我创建了一个本身不是对象的类,这意味着它没有属性或内存管理。它有几个方法可以计算一些东西。
从任何其他类中,我所要做的就是导入该类的 header 并执行以下操作:
#import "MyClass.h"
[MyClass callMethod];
为什么在这种情况下我不必分配 init ?它工作得很好。
最佳答案
听起来您正在尝试调用类方法。这些方法已定义为:
- +(void) myStaticMethod;
而不是
- -(void) myMethod;
加号表示该方法不使用任何字段,因此不需要实例化该对象。
在您的示例中,“object”是类“NewObject”的实例,已分配内存并初始化。作为您的示例,“MyClass”只是一个类,因为它具有如上所述声明的静态成员,所以不需要实例化。
类方法提供了一种将一堆相关函数组合到一个地方的好方法,而不是像通常在直接 C 中那样将它们分散在常规命名空间中。您还可以同时拥有类方法和实例方法在同一个类中,需要时使用类的,需要时实例化类以使用实例的。
编辑:更改了术语以引用类方法而不是静态方法。
关于iphone - 从 Objective-C 中的另一个类调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11889458/