我是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
我该怎么做?
(对不起,如果这非常令人困惑)
答案 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
。
我认为这可以回答你的问题。请不要犹豫,要求澄清。