Самый простой способ сделать это, если вы можете, это написать свой код в Objective-C, а затем обернуть его в C. Это позволяет избежать всех сложных частей бесплатного моста (и эти сложные части толькостановится сложнее. -retain / -release сложнее, если вы хотите, например, поддерживать ARC __weak).