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

这是一个非常基本的问题,但我已经搜遍了所有,无法find一个答案,足以解释我的头脑。

我想要做的是在我的iOS应用程序的一个类中创build一个方法,然后从我的应用程序中的其他类调用该方法。 有人能够解释我需要做什么来达到这个目的吗? 任何帮助将不胜感激,因为我迄今为止的所有尝试都失败了!

谢谢。

Objective-C的:

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

在Tar​​getClass.h或TargetClass.m内(取决于你想给它的范围):

#import "ClassYouWantToUse.h" 

然后创build一个你想在目标类中使用的类的实例,或者像这样的属性:

 @property (nonatomic,strong) ClassYouWantToUse *classObject; 

或者像这样的一个实例variables:

 ClassYouWantToUse *classObject; 

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

 classObject = [[ClassYouWantToUse alloc] init]; 

现在你可以调用这个类的任何公共方法:

 [classObject theClassMethodWithParam:param1 andSecondParam:param2]; 

注意: ClassYouWantToUse类必须具有您希望通过在头文件中声明他们可访问的方法:

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

否则,你将无法看到这些方法。


迅速:

这些东西真的没有什么特别的,只是join这个作为参考。

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

 let classObject = ClassYouWantToUse() 

并直接使用它:

 classObject.theClassMethodWithParam(param1, andSecondParam:param2) 

你有两个基本的select。 您可以创build或将第一个类的实例传递给第二个类,或者可以将静态方法添加到第一个类,并使用该类对象直接调用它。

比如说你有:

 @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 

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