gpt4 book ai didi

iphone - 如何使继承的类能够在 Objective-C 中看到父类的隐藏方法

转载 作者:可可西里 更新时间:2023-11-01 17:09:07 25 4
gpt4 key购买 nike

<分区>

我有两个类,Class1 和 Class2,第二个继承自第一个。我需要覆盖 Class1 的 -update 方法来实现我的目标。继承方法中-update方法的变化是在代码中间进行的,所以我不能使用[super update]。这就是为什么我需要将原始方法从父类复制粘贴到继承类。此方法使用父级的私有(private)方法,因此当我尝试覆盖时,我收到有关缺少私有(private)方法的警告,因为 Class2 仅导入 Class1.h。为了澄清,这里是代码:

Class1.h:

@interface Class1 : NSObject
-(void) update;
@end

Class1.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

Class2.h:

@interface Class2 : Class1
-(void) update;
@end

Class2.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),所以我无法更改它(这就是我做继承的原因)。

问题是:如何删除警告?我能看到的唯一解决方案是将私有(private)方法的签名复制到 Class2,但这似乎是一个卑鄙的把戏。或者,如果有人不指出如何删除警告,而是指出如何更好地实现更改方法的目标,那将是完美的。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com