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