2014-09-27 5 views
0

Я задавался вопросом, есть ли альтернатива extern "C" в Swift? Я хочу написать простой плагин Unity, и как Obj-C noob я бы хотел сделать это в Swift, если это возможно. Сейчас у меня есть очень простой код Obj-C, чтобы показать UIAlertView с помощьюИспользовать extern "C" в Swift?

extern "C" 
{ 
    void _addAlert() 
    //Whatever 
} 

И в Unity он соединился с

private static extern void _addAlert() 
{ 
    //Same whatever 
} 

Я ищу способ использовать Swift вместо Obj -С. Возможно ли это?

+0

Что именно вы ожидаете от extern «C» в Swift? Вы не можете писать C в Swift, поэтому возможность указывать, как это связано, даже не актуальна. Swift может взаимодействовать с C, но вы не можете вставлять C в Swift. – drewag

+0

@drewag Сейчас у меня есть очень простой код Obj-C, чтобы показать UIAlertView с помощью 'ехЬегпа«C» { пустот _addAlert() } ' И в Unity он соединился с 'частной статическим экстерном пустотой (_addAlert() ' Я ищу способ использовать Swift вместо Obj-C. – fivepointseven

+0

Итак, вы спрашиваете, как вызвать код Swift с C, или, более конкретно, из Unity. Вы должны изменить свой вопрос, чтобы спросить об этом. – drewag

ответ

0

Функции верхнего уровня от Swift cannot be used от C/Objective-C. Таким образом, вы не сможете ссылаться на него с C/Objective-C.

1

Можно использовать Swift в сочетании с Unity. Я сделал это.

Вам нужно будет создать «класс-оболочку» в Objective-C, который находится между C-функциями, вызываемыми Mono, и созданным кодом Swift.

Это сообщение объясняет, как вызывать Swift из Objective-C: http://ericasadun.com/2014/08/21/swift-calling-swift-functions-from-objective-c/

Не забудьте установить целевую сборку, прошивку 7.0 в качестве нижнего SDK не поддерживает Swift.