2012-01-25 2 views
9

В iOS и OS X Sdk есть очень крутая концепция бесплатного моста. Если бы я написал свой код на C и написал обертку Obj-C для него и хочу использовать его как Toll-Free-Bridged, как мне это сделать? Любые примеры, пожалуйста.Как реализовать бесплатное мостовое соединение в ObjectiveC/C?

ответ

7

См. Руководство по адресу https://web.archive.org/web/20111013023821/http://cocoadev.com/index.pl?HowToCreateTollFreeBridgedClass. В принципе, вам нужно создать структуру C, которая имеет тот же размер и макет, что и obj-c. Также необходимо выполнить некоторые фанки, чтобы правильно реализовать сохранение/освобождение.

+0

cocoadev.com, похоже, больше нет, есть какая-либо обновленная ссылка? –

+0

версия веб-архива: https://web.archive.org/web/20111013023821/http://cocoadev.com/index.pl?HowToCreateTollFreeBridgedClass – kuba

+0

Это было отмечено для удаления, поскольку оно не содержит необходимых деталей для решения проблема в самом ответе. Не могли бы вы отредактировать этот ответ, чтобы пользователям не нужно было следить за ссылкой (или версией веб-архива ссылки), чтобы понять, как решить проблему? – josliber

3

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

+0

Но разве это не убьет цель? Я хотел бы реализовать ядро ​​в C, чтобы его можно было повторно использовать из среды ObjC (а также получить некоторое повышение производительности, если оно есть). – zakishaheen

+0

Это часть «если сможешь». Если вам действительно нужно обернуть C, вы должны сделать это с трудом. –

Смежные вопросы