В кои-то веки потребовалось в рантайме переопределять методы класса. В документации сразу нашлась подходящая функция:
единственный аргумент, который может смутить - это types, который
задает типы аргументов и возвращаемого значения в закодированном
текстовом виде. Нужные значения можно посмотреть либо в документации,
либо исппользовать @encode
.
Вторая тонкость оказалась в том, что эта функция добавляет (или переопределяет) метод экземпляра, а что же делать если нужно заменить метод самого класса?
Правильно, получить метакласс с помощью object_getClass(ourClass)
и
заменить его метод как обычно :)