这是一个非常基本的问题,但我已经搜遍了所有的搜索结果并且无法找到足以让我理解的答案。
我想要做的是在我的iOS应用程序的一个类中创建一个方法,然后从我的应用程序中的其他类调用该方法。有人可以准确解释我需要做些什么来实现这一目标吗?任何帮助都会非常感激,因为到目前为止我的所有尝试都失败了!
感谢。
答案 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)