Используйте определения C в Objective-C - PullRequest
0 голосов
/ 15 декабря 2010

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 15 декабря 2010

Да, конечно, вы можете использовать функции target-c в своем коде c (и наоборот), если ваш исходный файл скомпилирован как код c / obj-c (с расширением .m или типом, установленным вручную в xcode)

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

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

0 голосов
/ 15 декабря 2010

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

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

// Logger.m
#import "Logger.h"
void MyLog(NSString *str) {…}
...