我有两个类,Class1 和 Class2,第二个继承自第一个。我需要重写 Class1 的 -update 方法来实现我的目标。继承方法中-update方法的更改是在代码中间进行的,所以我不能使用[超级更新]。这就是为什么我需要将原始方法从父类复制粘贴到继承类。此方法使用父级的私有方法,因此当我尝试进行覆盖时,我收到有关缺少私有方法的警告,因为 Class2 仅导入 Class1.h。为了澄清,这里是代码:
类1.h:
@interface Class1 : NSObject
-(void) update;
@end
类1.m:
@interface Class1 (Private)
-(void) private1;
-(void) private2;
@end
@implementation Class1
-(void) update
{
[self private1];
[self private2];
}
-(void) private1
{
// some code
}
-(void) private2
{
// another code
}
@end
类2.h:
@interface Class2 : Class1
-(void) update;
@end
类2.m:
@implementation Class2
-(void) update
{
[self private1]; // warning here
// do my own stuff between private methods, that is the reason of inheritance
[self private2]; // warning too
}
@end
此外,Class1 不属于我的所有权,它是来自开源库(准确地说是 Cocos3D)的一个,所以我无法更改它(这就是我进行继承的原因)。
问题是:如何删除警告?我能看到的唯一解决方案是将私有方法的签名复制到 Class2,但这似乎是一个肮脏的把戏。或者,如果有人指出的不是如何删除警告,而是如何更好地实现我改变方法的目标,那将是完美的。