如何从另一个类中调用方法(iOS)
这是一个非常基本的问题,但我已经搜遍了所有,无法find一个答案,足以解释我的头脑。
我想要做的是在我的iOS应用程序的一个类中创build一个方法,然后从我的应用程序中的其他类调用该方法。 有人能够解释我需要做什么来达到这个目的吗? 任何帮助将不胜感激,因为我迄今为止的所有尝试都失败了!
谢谢。
Objective-C的:
您必须将包含要使用的方法的类的头( ClassYouWantToUse.h )导入要在( TargetClass )中使用它的类中。
在TargetClass.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
请注意,在大多数情况下,您将使用实例方法而不是静态方法。