来自同一个类看起来像
的方法-(void)functionA:(TemplateController *)sender ??
[self functionA];
之类的事情,但是我收到了找不到实例方法的错误。答案 0 :(得分:2)
-(void)functionA:(TemplateController *)sender
是名为functionA:
的方法,它需要类型为TemplateController
虽然您没有向其传递任何参数[self functionA]
。
它应该是这样的
[self functionA:templateControllerObject]
答案 1 :(得分:0)
您的方法有参数。
-(void)functionA:(TemplateController *)sender
Paramter是TemplateController,因此不传递此参数。这种方法没有被调用。
您没有传递参数,因此它会出错。
[self FunctionA];
这是错误的方式。
所以传递参数像这样
[self functionA:templateControllerObject];
答案 2 :(得分:0)
我认为您需要阅读objective-c
中的函数语法 - (type_r) abc:(type1)x cde:(type2)y def:(type3)z
是一个实例方法(使用它需要创建一个对象),其名称为abc:cde:def:
,返回类型为type_r的东西,分别接收类型为type1,type2和type3的三个参数x,y和z
要打电话,你说
class_name obj = [[class_name alloc] init];
[obj abc:x1 cde:y1 def:z1];
就像在c ++中这样做:
class_name obj = new class_name();
obj.func_name(x1, y1, z1);
如果在开头有一个'+'而不是' - ',这意味着它是一个类方法,它应该只使用类名来调用
[class_name abc:x1 cde:y1 def:z1];
其次,函数未在头文件中“实现”。它们只是'声明'作为编译器的指令,不用担心,你会在链接时找到这个函数的实现。
答案 3 :(得分:0)
在方法-(void)functionA:(TemplateController *)sender
中,sender是方法的参数。因此,当您调用functionA
方法时,即使参数为nil
,也应指定参数,即{{1} }。如果您不需要传递任何参数,则应将方法更改为[self functionA:nil]
,然后将其称为-(void)functionA
。