Изменение реализации метода Objective C в подклассе Swift - PullRequest
0 голосов
/ 21 февраля 2019

Я использую внешнюю библиотеку в своем проекте.Он интегрирован через CocoaPods.У меня есть доступ к исходному коду.Библиотека работает хорошо, но мне нужны некоторые модификации в некоторых местах, чтобы она служила моим целям.Он написан на Objective C. Мой проект на Swift.Мне нужно изменить реализацию одного метода в библиотеке.Проблема в том, что он находится в файле .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, которые также недоступны.Есть ли способ решить это?

1 Ответ

0 голосов
/ 21 февраля 2019

Я бы предложил разветвить оригинальный репозиторий библиотеки и внести необходимые изменения в ваш форк.Тогда вы можете сделать так, чтобы ваш Podfile указывал на это.Если ваши изменения могут быть полезны для других, сделайте их так, чтобы не нарушать существующую функциональность, и отправьте их обратно в библиотеку, открыв запрос на извлечение.

Если исходная библиотека будет обновлена ​​позже, вы будетеНужно объединить эти изменения из так называемого «восходящего» хранилища в ваше.Это не происходит автоматически, поэтому вы будете иметь полный контроль (и ответственность) над этим процессом.Смотрите https://help.github.com/en/articles/syncing-a-fork, как это будет выглядеть.

...