Прежде всего, совершенно не нужно ничего конвертировать.Совершенно нормально вызывать библиотеки C ++ из Objective-C.
Во-вторых, причиной ошибки компилятора является то, что вы пытаетесь вставить метод в место, где должен быть указатель на функцию.Вы не можете сделать указатель на функцию из метода Objective C с помощью оператора &
.Просто сохраните свою on_reg_state()
функцию и используйте ее, как вы делали раньше, так вы делаете обратные вызовы и в средах Apple на основе C (которые понадобятся вам, как только вы выйдете за пределы того, что предоставляют высокоуровневые API Objective-C)).
И в-третьих, ваш метод + (void)Init
кажется немного странным.Я настоятельно рекомендую вам написать метод с именем Init
(с заглавной буквы).Если вы намереваетесь написать инициализатор, он должен быть - (id)init
, то есть в нижнем регистре и возвращать id
.И не забудьте вызвать назначенный инициализатор его суперкласса, проверить его возвращаемое значение, присвоить его себе и вернуть в конце метода init
(см. Реализация инициализатора в Документация Apple , если вы не знакомы с этим).И если ваш метод не является инициализатором, используйте другое имя, например - (void)createConfig
.