Как преобразовать NSString в const void?
Я пробовал
NSString *testString = @"testString"; const void *testConstVoid = CFBridgingRetain(testString);
Но testConstVoid по-прежнему является nsstring
В дополнение к UTF8String у вас есть cStringUsingEncoding: и getCString:maxLength:encoding:.
UTF8String
cStringUsingEncoding:
getCString:maxLength:encoding:
В первых двух случаях вам нужноскопировать возвращенную строку C в свой собственный буфер символов или NSData, если вы планируете использовать ее после первоначального NSString времени жизни:
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;
Вместо CFBridgingRetain(testString) следует использовать testString.UTF8String
CFBridgingRetain(testString)
testString.UTF8String
NSString *testString = @"testString"; const void *testConstVoid = testString.UTF8String;
Результат