NSString, чтобы const void * - PullRequest
0 голосов
/ 05 июня 2018

Как преобразовать NSString в const void?

Я пробовал

NSString *testString = @"testString";
const void *testConstVoid = CFBridgingRetain(testString);

Но testConstVoid по-прежнему является nsstring

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

В дополнение к UTF8String у вас есть cStringUsingEncoding: и getCString:maxLength:encoding:.

В первых двух случаях вам нужноскопировать возвращенную строку C в свой собственный буфер символов или NSData, если вы планируете использовать ее после первоначального NSString времени жизни:

NSString *str = @"hello";
const char *cStr = str.UTF8String;
const NSUInteger cStrLen = [str lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
NSMutableData *cStrData = [[NSMutableData alloc] initWithBytes:cStr
                                                        length:cStrLen + 1];
    // +1 for '\0' (C string null-terminator)
const void *cStrBytes = cStrData.bytes;
0 голосов
/ 05 июня 2018

Вместо CFBridgingRetain(testString) следует использовать testString.UTF8String

NSString *testString = @"testString";
const void *testConstVoid = testString.UTF8String;

Результат

enter image description here

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