iPhone файл IO в чистом стиле c / posix - PullRequest
1 голос
/ 22 октября 2010

есть ли способ записи файлов в файловую систему iphone с использованием только чистого кода c и некоторого posix, такого как api?

Я нашел только некоторые вещи Objective-C / Cocoa и думаю, что смогупросто смешайте фрагмент кода Objective C в файл .c.

Ответы [ 2 ]

3 голосов
/ 22 октября 2010

Objective C - это чистый супернабор простого ANSI C. Вы можете просто вставить любой чистый код C в любой файл Objective C .m. (Обратное не будет работать, потому что компилятор не будет знать, как скомпилировать файл .c с использованием языкового надмножества.)

Добавлено: способ сделать это наоборот - не пытаться напрямую поместить Objective C в файл C, а поместить Objective C в новый файл Objective C .m с функцией-оберткой C, чтобы вызвать это. Метод Objective C также в этом .m файле. Затем используйте вызов функции C в файле C для вызова этого файла C в функцию-обертку C файла Objective C, и пусть эта функция-обертка C в файле Objective C вызывает метод Objective C.

Большинство вызовов posix на C нормально работают на iPhone, хотя некоторые являются незаконными, если они пытаются выйти за пределы изолированной программной среды безопасности (например, вам, возможно, придется использовать немного Objective C, чтобы определить, какие допустимые пути к файлам вызывают вызов posix fopen () можно использовать.)

Я взял большие приложения на C и упаковал их в достаточно Objective C, чтобы связать их с платформой Cocoa Touch UI. Несколько страниц стоит.

1 голос
/ 22 октября 2010

Objective-C - это слой, построенный поверх языка C; поэтому потенциально все, что написано на C или что-либо из стандартной библиотеки C, может быть вызвано в вашем коде Objective-C.

Для файлового ввода-вывода вы можете использовать стандартный C-файл ввода-вывода:

NSString *filePath = @"YOUR FILE PATH";
FILE *file;
file = fopen([filePath cStringUsingEncoding:NSUTF8StringEncoding], "w");

fprintf(file, "YOUR OUTPUT HERE\n");

fclose(file);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...