如何从另一个类中调用方法(iOS)

时间:2012-03-16 02:43:12

标签: ios

这是一个非常基本的问题,但我已经搜遍了所有的搜索结果并且无法找到足以让我理解的答案。

我想要做的是在我的iOS应用程序的一个类中创建一个方法,然后从我的应用程序中的其他类调用该方法。有人可以准确解释我需要做些什么来实现这一目标吗?任何帮助都会非常感激,因为到目前为止我的所有尝试都失败了!

感谢。

3 个答案:

答案 0 :(得分:44)

<强>目标-C:

您必须将包含要使用的方法的类的标头( ClassYouWantToUse.h )导入到要在其中使用的类( TargetClass )。

在TargetClass.h或TargetClass.m中(取决于你想要的范围):

#import "ClassYouWantToUse.h"

然后在目标类中创建要在目标类中使用的类的实例,如下所示:

@property (nonatomic,strong) ClassYouWantToUse *classObject;

或者像这样的实例变量:

ClassYouWantToUse *classObject;

确保初始化它! (通常在ViewDidLoad中):

classObject = [[ClassYouWantToUse alloc] init];

现在你可以像这样调用该类中的任何公共方法:

[classObject theClassMethodWithParam:param1 andSecondParam:param2];

注意: ClassYouWantToUse类必须通过在头文件中声明它们来让其他人可以访问这些方法:

- (void)theClassMethodWithParam:(UIImage*)someImage andSecondParam:(NSString*)someText;

否则您将无法看到这些方法。


<强>夫特:

Theres在swift中真的没有什么特别之处,只需添加它作为参考。

在swift中,您只需创建要使用的类的实例:

let classObject = ClassYouWantToUse()

直接使用它:

classObject.theClassMethodWithParam(param1, andSecondParam:param2)

答案 1 :(得分:3)

您有两个基本选项。您可以将第一个类的实例创建或传入第二个类,也可以将静态方法添加到第一个类,并使用类对象直接调用它。

例如,假设你有:

@interface ClassA : NSObject {
}

//instance methods
- (int) addNumber:(int)num1 withNumber:(int)num2;

//static/class methods
+ (int) add:(int)num1 with:(int)num2;
@end

@implementation ClassA
- (int) addNumber:(int)num1 withNumber:(int)num2 {
    return num1 + num2;
}

+ (int) add:(int)num1 with:(int)num2 {
    return num1 + num2;
}
@end

然后你可以这样做:

#import "ClassA.h"

@interface ClassB : NSObject {
    ClassA* adder;
}

//constructors
- (id) init;  //creates a new instance of ClassA to use
- (id) initWithAdder:(ClassA*)theAdder;  //uses the provided instance of ClassA

//instance methods
- (int) add2To:(int)num;

//static/class methods
+ (int) add3To:(int)num;
@end

@implementation ClassB
- (id) init {
    if (self = [super init]) {
        adder = [[ClassA alloc] init];
    }
    return self;
}

- (id) initWithAdder:(ClassA*)theAdder {
    if (self = [super init]) {
        adder = theAdder;
    }
    return self;
}

- (int) add2To:(int)num {
    return [adder addNumber:2 withNumber:num];
}

+ (int) add3To:(int)num {
    return [ClassA add:3 with:num];
}
@end

请注意,在大多数情况下,您将使用实例方法而不是静态方法。

答案 2 :(得分:1)