在Swift子类中更改目标C方法的实现



我正在使用项目中的外部库。它是通过可可录集成的。我可以访问源代码。图书馆运作良好,但是我需要在某些地方进行一些修改,以便它可以满足我的目的。它是用目标C编写的。我的项目在迅速。我需要更改库中一种方法的实现。问题在于它在.m文件中,并且仅使用.m文件中声明的很多东西。例如:

-(NSString*)methodToChange
{
    NSArray<NSNumber*>* data = [self someInternalMethod:1];
    uint value = data[0].unsignedIntValue;
    return [self anotherInternalMethod:value];
}

我尝试这样的子类:

class MySubclass : MySuperclassWithMethodToChange {
    override var methodToChange: String {
        //trying to use someInternalMethod and anotherInternalMethod
        //unsuccessfully because they are not visible 
    }
}

内部方法正在使用和修改.m文件也无法访问的属性。有什么办法解决这个问题吗?

我建议您分叉原始库存储库并在叉子中进行必要的更改。然后,您可以将您的Podfile指出。如果您的更改对他人有用,请以不破坏现有功能并通过打开拉动请求将其贡献回库的方式。

如果原始库稍后将更新,则必须将所谓"上游"存储库中的这些更改合并到您的。这不是自动发生的,因此您将对该过程完全控制(和责任)。请参阅https://help.github.com/en/articles/syncing-a-fork有关的样子。

最新更新