Вы так можете совсем запутать топикстартера. Не рассказываете как и в какой момент надо прятать этот вставленный контроллер.
К тому же, раз текущий контроллер был initial в сториборде, значит текущий сториборд можно получить из [self storyboard]. В вашем же случае создастся новый инстанс сториборда и это чревато поломанной логикой переходов.
Я бы предпочел presentViewController вместо childViewController
причем эта тема с регистрами и стеком конечно же аппаратно зависима, я описал это для arm, на x86 (в симуляторе iOS или приложении для mac os) всё иначе (возможно проще и единообразно)
Есть серьезная проблема вызова оригинальной функции в подменненной функции. Методы objc на нижайшем уровне реализованы как функции типа IMP.
typedef id (*IMP)(id, SEL, ...);
Многоточие всё и портит. Если бы тут был va_list, всё было бы прекрасно, а в таком виде мы не можем взять текущие аргументы функции и прокинуть дальше.
Т.е. чтобы вызвать оригинальную функцию нужно прикастить её с конкретизацией типа аргумента. Так как на этапе компиляции компилятор решает как передавать параметр - или через регистр или через стек или как CGRect - половину через регистры, а половину через стек.
Вот я и спрашиваю - если вас устроит вариант, который будет поддерживать только сеттеры примитивных типов (NSInteger, CGFloat и тп), указателей (char *, id, NSObject *) и конкретных структур (CGRect, CGPoint, CGSize и других, т.к. есть возможность узнать какого типа аргумент у метода) - то это можно реализовать и весьма элегантно на мой взгляд. С аргументами-структурами неизвестного на этапе компиляции состава пока ничего не выходит.
если устроит, то можно сделать поддержку указателей, всех примитивных типов ну и каких-нибудь CGRect, CGPoint. сложные структуры никак не получается придумать как передавать
@MagoVinch во-первых "- (void)setNeedValue;" это не то что надо. Сеттер принимает параметр, поэтому метод должен быть "- (void)setNeedValue:(NSInteger)value;". Просто объявить его в хедере тоже мало, нужно обязательно написать имплементацию.