Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 从另一个类调用obj-c类函数_Iphone - Fatal编程技术网

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

Iphone 从另一个类调用obj-c类函数,iphone,Iphone,我是Obj-C新手,我有一个类,里面有一个类的变量,我有一个不在类中的函数,当第一个类调用函数时,我需要调用第一个类变量的函数。写得全错了,但我不知道正确的词,所以: Root.h: @interface Root { UITableView *tableview; } @property (nonatomic,retain) UITableView *tableview; @end 我有一个functionRoot是delagate,所以它被调用,并调用另一个函数,而不是在任何类或任

我是Obj-C新手,我有一个类,里面有一个类的变量,我有一个不在类中的函数,当第一个类调用函数时,我需要调用第一个类变量的函数。写得全错了,但我不知道正确的词,所以:

Root.h:

@interface Root {
    UITableView *tableview;
}
@property (nonatomic,retain) UITableView *tableview;
@end
我有一个functionRoot是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);

等 但它总是出错,我也试着传递一个指向self的指针,然后调用self

[pointer.tableview reloadData];
但当我运行它时,会出现以下错误:

unrecognized selector sent to instance 0x3detc
我该怎么做


很抱歉,如果这让人非常困惑,我不确定我是否正确理解您,但是如果您想从类外部调用类中定义的函数,您只需创建类的实例(如果它是实例方法并将其用作接收器),或者如果它是类方法,则使用类本身作为接收器。换句话说,假设我想调用方法someFunction,它是SomeClass的实例方法。以下是我需要做的:

SomeClass *someClass = [[SomeClass alloc] init];
[someClass someFunction];
如果是类函数,我不需要实例化对象实例。我只是这样做:

[SomeClass someFunction];

让我直截了当地说:您有一个类根和该类myRoot的一个实例。在这个类中,有两个函数-update和-anotherFunction。您还有一个C函数搜索。在-anotherFunction中时,您希望调用search,然后从那里调用原始root实例中的-update

如果这一切都是正确的,那么让我们通过调用[myRoot anotherFunction];,来假装您进入了-anotherFunction;。我们还将假设所有内容都在同一个文件中,或者所有文件都已正确导入或包含

您需要将搜索定义为void searchid回调。在另一个函数中调用search,如下所示:searchself。然后,在搜索中,您可以调用[回调更新];从最初执行-anotherFunction的类实例调用-update


我想这回答了你的问题。请不要犹豫,要求澄清。

是的。但这不会创建该类的另一个实例吗?这不起作用,并且会产生与向类传递指针相同的错误。此外,您的搜索方法似乎使用C而不是Obj-C。虽然这当然可以接受,但有没有理由不将其编码为目标C?我不喜欢Obj-C,但主要是因为搜索方法应该是跨平台的,如果平台不支持obj-c,我不想重写它。不过,它还是在mm文件中声明的,因为否则它不会编译。发布整个文件或多个文件。如果导入包含搜索的文件,则不会出现问题。
[SomeClass someFunction];