从类似的类中调用方法

时间:2013-11-28 08:27:11

标签: ios objective-c

来自同一个类看起来像

的方法
-(void)functionA:(TemplateController *)sender    ??
  1. 已在.h。
  2. 中定义
  3. 通常我会做[self functionA];之类的事情,但是我收到了找不到实例方法的错误。

4 个答案:

答案 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