从另一个类调用obj-c类函数

时间:2010-02-13 21:48:50

标签: iphone

我是Obj-C的新手,我有一个类,其中有一个类的变量,我有一个函数不在类中,我需要调用第一个变量的函数,当第一个类调用该函数时。多数民众赞成写错了,但我不知道正确的话:

Root.h:

@interface Root {
    UITableView *tableview;
}
@property (nonatomic,retain) UITableView *tableview;
@end

我有一个函数(Root是一个delagate,所以它被调用,并调用另一个函数,而不是任何类或任何东西:

void Search()
{
    //here I need to call a function, I dont know how.  If I was in Root.m, it would be
    //[self.tableview reloadData];

但是在这里我不知道如何调用它,我试过将一个指针传递给Root.m中调用函数的函数:

-(void) update {
    [self.tableview reloadData];
}
-(void) anotherFunction {
    Search(update);

    Search(self.update);

等 但它总是出错,我也尝试将指针(self)传递给Search,然后调用

[pointer.tableview reloadData];

但运行时出现错误:

unrecognized selector sent to instance 0x3detc

我该怎么做?

(对不起,如果这非常令人困惑)

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解正确,但是如果你想从类外调用类中定义的函数,你只需创建一个类的实例,如果它是一个实例方法并将其用作接收器,或者如果它是类方法,则使用类本身作为接收器。换句话说,假设我想调用someFunction方法,它是SomeClass的实例方法。这就是我需要做的事情:

SomeClass *someClass = [[SomeClass alloc] init];
[someClass someFunction];

如果它是一个类函数,我不需要实例化一个对象实例。我只是这样做:

[SomeClass someFunction];

答案 1 :(得分:0)

所以让我直截了当地说:你有一个班级Root和一个班级myRoot的实例。在课堂上,有两个函数-update-anotherFunction。你还有一个C函数search()。在-anotherFunction时,您要拨打search(),然后在-update的原始实例中回复root

如果这一切都正确,那么我们假装您通过致电-anotherFunction进入[myRoot anotherFunction];。我们还会假设所有内容都在同一个文件中,或者所有文件都已#import#include正确。

您需要将search()定义为void search(id callback)。在-anotherFunction中调用search(),如下所示:search(self)。然后,在search()中,您可以致电[callback update];从您最初执行{1}}的类实例中调用-update

我认为这可以回答你的问题。请不要犹豫,要求澄清。