Я хотел бы знать, как найти, какой из этих методов
конструкторы, как я пишу контейнер IOC. я бы хотел
определить конструкторы и их типы параметров.
Короче, ты не можешь. Или, по крайней мере, вы обнаружите, что по этому пути лежит безумие.
Во-первых, Objective-C не имеет конструкторов . У него есть инициализаторы, иногда много, и - для правильно написанного класса - только один из которых - обозначенный инициализатор . Невозможно определить назначенный инициализатор во время компиляции или во время выполнения.
Как я могу использовать это с Методом * и без экземпляра члена
класс
Вы нет. Сначала вы выделяете экземпляр класса, а затем инициализируете экземпляр.
В целом, этот уровень абстракции просто не выполняется в Objective-C за пределами академических исследований. Это может быть сделано, но этого обычно избегают из-за хрупкости получающегося решения и шарика кода-ада, который пытается динамически поддерживать базовый C ABI (см. Исходный код libffi).
Если вы хотите пойти по этому пути, то вам гораздо лучше либо определить собственный абстрактный класс, который будет содержать подкласс всех ваших контейнеров, который может обеспечить логику привязки для класса, стоящего за ним.
или использовать протоколы; то есть класс может реализовывать протокол IOCBean, и один метод будет initIOCGoop
, который является назначенным инициализатором goo.
Выполнение этого в общем случае для всех классов будет сопряжено с хрупкостью, особыми случаями и потребует гигантского беспорядка кода, который будет сложно поддерживать с течением времени.