这是一个非常基本的问题,但我已经找遍了,并一直无法找到解释不够好,我绕过它我的头一个答案。如何从一个类在另一个(IOS)调用方法
我想要做的是在一个类中我iOS应用程序的创建方法,然后再调用其他类,方法在我的应用程序。有人能够解释我需要做什么来实现这一目标吗?任何帮助将不胜感激,因为我迄今为止的所有尝试都失败了!
谢谢。
这是一个非常基本的问题,但我已经找遍了,并一直无法找到解释不够好,我绕过它我的头一个答案。如何从一个类在另一个(IOS)调用方法
我想要做的是在一个类中我iOS应用程序的创建方法,然后再调用其他类,方法在我的应用程序。有人能够解释我需要做什么来实现这一目标吗?任何帮助将不胜感激,因为我迄今为止的所有尝试都失败了!
谢谢。
的Objective-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;
否则,您将无法看到这些方法。
斯威夫特:
即使世界真的没有什么特别的地方在迅速,只需添加此作为参考。
在SWIFT只需创建您要使用的类的实例:
let classObject = ClassYouWantToUse()
,并直接使用它:
classObject.theClassMethodWithParam(param1, andSecondParam:param2)
谢谢**所以**多!你无法想象我已阅读了多少篇帖子,试图找出答案。正如我现在想要的那样工作! – 2012-03-16 12:21:39
路易斯·奥斯卡,你美丽的男人! – Ian 2013-02-22 17:23:00
好奇,现在有两个ClassToBeUsed实例的正确解决方案是什么?因为*类与ClassToBeUsed中的自我背向不一样?所以在这个例子中,如果我从[something somethingWithParam:blabla andSecondParam:otherbla]引用self,它会引用* something。如果我需要引用ClassToBeUsed的原始实例,该怎么办? – rick 2013-07-12 01:26:37
你有两个基本的选择。您可以创建或第一类的实例传递到第二类,也可以添加一个静态方法来第一类和直接使用类对象调用它。
举例来说,假设你有:
@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
注意,在大多数情况下,你可以使用实例的方法,而不是静态方法。
我觉得你的问题有点含糊。您将在任何基本应用程序中完成此操作。即。调用对象的方法。你可以给代码示例显示你正在尝试做什么? – drekka 2012-03-16 02:47:22
您可以使用NSNotificationCenter或委托或您的自定义协议.... – 2013-09-26 13:27:25