2010-12-15 2 views
0

Я бы определил некоторые вспомогательные функции, и я предпочитаю писать их в C вместо объектива-C.Используйте определения C в Objective-C

Какая «лучшая практика» для добавления заголовка и файла реализации C в проект Objective C?

Если мне нужно использовать определение Objective-c в моих функциях, что мне нужно включить в мой файл C заголовка (UIKit?)?

Пример: я хотел бы создать ярлык для NSLog для NSString, могу ли я создать в своем C-файле что-то похожее на этот код? :

void MYLog (NSString *string){ 
    NSLog(@"%@",string); 
} 
+0

Почему создать ярлык для `NSLog()`, чтобы взять одного `NSString`, когда он уже принимает строку, и ** ** опционально несколько параметров? – PeyloW 2010-12-15 12:47:40

+0

Каждый раз, когда я думал *, я просто создаю C API здесь *, я пожалел об этом ... Версия Objective-C работает не так много, редко берет на себя значительное количество накладных расходов и прямолинейных C и является значительно более универсальным. – bbum 2010-12-15 16:32:15

+0

ehm ... Peylow вы правы, совершенно бесполезно ... скажем, это пример, который поможет мне сформулировать вопрос: P -.- – MatterGoal 2010-12-23 20:58:55

ответ

2

Да, что вы можете использовать Objective-C функции в С-кодом (и наоборот), если ваш исходный файл скомпилирован как с/Obj-C код (имеет .m расширения или типа устанавливается вручную в Xcode)

Чтобы сделать основные функции работами, я думаю, что импорт <Foundation/Foundation.h> и <UIKit/UIKit.h> должен быть достаточным. Эти заголовки могут быть уже импортированы в ваш предварительно скомпилированный заголовок (* .pch-файл), поэтому вам даже не нужно их импортировать.

Если вы хотите расширить некоторые классы классов UIKit, рассмотрите также реализацию пользовательской категории классов вместо использования простых c-функций.

0

Вы можете сделать это довольно легко. Вам не нужно ничего импортировать, так как у вас есть UIKit и Foundation, уже импортированные заголовком префикса. Функция регистратора будет выглядеть следующим образом:

// Logger.h 
void MyLog(NSString *str); 

// Logger.m 
#import "Logger.h" 
void MyLog(NSString *str) {…} 
Смежные вопросы