我的问题是关于一个参数的方法正常工作但不适用于两个参数的情况。代码来自Apple动画示例代码。
主视图对象(self)具有对抽象超类对象s的只读引用。
它可以在一个继承自超类的实例上调用方法,如下所示:
[self.s myMethod:param1];
它工作正常。
然而,当我尝试:
[self.s anotherMethod:param1 secondParam:param2];
我收到编译错误:
语义问题>实例方法'-anotherMethod:secondParam:'not found(返回类型 默认为'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文件中的实现
尝试将此添加到继承的.m文件中。
@interface InheritedClass ()
- (void) anotherMethod:(SomeObject *) param1: (int) param2;
@end
答案 0 :(得分:1)
这个电话:
[self.s anotherMethod:param1 secondParam:param2];
...表示方法名称为anotherMethod:secondParam:
。
此声明:
- (void) anotherMethod:(SomeObject *) param1: (int) param2;
...名称不同。
你是否有可能说:
- (void) anotherMethod:(SomeObject *)param1 secondParam:(int)param2;