Преобразование Objective-c в C

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

      const void *GPUModel = CFDictionaryGetValue(serviceDictionary, CFSTR("model"));

            if (GPUModel != NULL) {
                if (CFGetTypeID(GPUModel) == CFDataGetTypeID()) {
                    //(Original Comment) Create a string from the CFDataRef.
                    //NSString *modelName = [[NSString alloc] initWithData:
                    //                       (NSData *)GPUModel encoding:NSASCIIStringEncoding];

                }
            }

2 ответа

C-подобные строки на самом деле являются указателями на символы или массивом символов, в котором хранится каждый символ. В случае Obj-c NSString - это класс с массивом символов внутри, а те методы, которые используются для изменения вашего строкового значения, являются просто методами, а сам NSString использует строки в стиле C, такие как массив символов. Поэтому, если вы хотите работать со строкой в ​​стиле C, вам нужно использовать массивы символов, совместимые с Obj-C, потому что это просто примитивный тип данных.

Если вам понадобится дополнительная помощь, не стесняйтесь отвечать. С наилучшими пожеланиями.

Решение спасибо Cy-4AH и Робу Напье.

      const char *gpu_name = (char *)CFDataGetBytePtr(GPUModel);
return gpu_name;
Другие вопросы по тегам