Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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
Objective c 使用多个参数时找不到实例方法_Objective C - Fatal编程技术网

Objective c 使用多个参数时找不到实例方法

Objective c 使用多个参数时找不到实例方法,objective-c,Objective C,我的问题是关于一种情况,即对于一个参数的方法,情况可以很好地工作,但对于两个参数的方法则不行。该代码来自苹果动画示例代码 主视图对象(self)具有对抽象超类对象s的只读引用 它可以对继承自超类的实例调用方法,如下所示: [self.s myMethod:param1]; 而且效果很好 但是,当我尝试时: [self.s anotherMethod:param1 secondParam:param2]; 我得到编译错误: 语义问题>实例方法'-anotherMethod:secondPara

我的问题是关于一种情况,即对于一个参数的方法,情况可以很好地工作,但对于两个参数的方法则不行。该代码来自苹果动画示例代码

主视图对象(self)具有对抽象超类对象s的只读引用

它可以对继承自超类的实例调用方法,如下所示:

[self.s myMethod:param1];
而且效果很好

但是,当我尝试时:

[self.s anotherMethod:param1 secondParam:param2];
我得到编译错误:

语义问题>实例方法'-anotherMethod:secondParam:'未找到(返回类型 默认为“id”)

这两个方法都具有返回类型-(void)

对于第一种情况和第二种情况,所有内容都以相同的方式声明和定义

如有任何建议,将不胜感激

(我真的不想求助于将参数捆绑到单个对象中!)


下面添加示例的修正案

在超类和继承类的.h文件中这样的声明

对于超级类:

@interface SuperClass : NSObject
{
...
}
...
- (void) myMethod:(SomeObject *) param1;
- (void) anotherMethod:(SomeObject *) param1: (int) param2;
@end
对于继承的类:

#import "SuperClass.h"
@interface InheritedClass : SuperClass
{
...
}
...
- (void) myMethod:(SomeObject *) param1;
- (void) anotherMethod:(SomeObject *) param1: (int) param2;
@end
每个类的.m文件中的实现

已尝试将其添加到继承的class.m文件中

@interface InheritedClass ()
- (void) anotherMethod:(SomeObject *) param1: (int) param2;
@end
此电话:

[self.s anotherMethod:param1 secondParam:param2];
…表示方法名称为
anotherMethod:secondParam:

本声明:

- (void) anotherMethod:(SomeObject *) param1: (int) param2;
…没有相同的名称

你有没有可能想说:

- (void) anotherMethod:(SomeObject *)param1 secondParam:(int)param2;

s
类的
@接口中是否有
-anotherMethod:secondParam:
的声明?不确定这里有什么问题。你似乎理解这个问题,但你对此感到不高兴(?)。所以是的-如果一个方法接受一个参数,而你提供了两个,它将抛出一个错误。你到底想做什么?你能为这两种方法发布@interface声明吗?它们都在头文件中吗?如果没有您所说的类的实际接口,这是不可回答的。你说得太模糊了,你说的一些事情(“如果我在视图的界面中将超类的范围更改为@public,”)从字面上看是无法理解的。我们可以看到每个@interface的示例代码以及它们所在的.h和.m文件,以及#import语句是什么/在哪里吗?是的,就是这样。非常感谢,我非常感激。