iOS NSString和CFStringRef

2025-12-23  本文已影响0人  搬砖的crystal

NSString 是Foundation框架提供的不可变字符串类。
CFStringRef 是Core Foundation框架中的不可变字符串类型。

CFStringRef类型判断:

CFStringRef cfString = CFSTR("111");
    if (CFGetTypeID(cfString) == CFStringGetTypeID()) {
        NSLog(@"变量是CFStringRef类型");
    }

互相转换

/*
     __bridge_retained:转换时,将对象的所有权转移给目标变量(相当于对源对象执行 retain 操作)
     __bridge_transfer:转换时,将对象的所有权从源变量转移给目标变量(相当于对源对象执行 release 操作)
     __bridge 实现直接转换,没有引用计数操作,适用于两种指针类型的相互赋值
     */

    //NSString 转 CFStringRef
    NSString *str1 = @"123";
    CFStringRef str2 = (__bridge CFStringRef)str1;
    //printf("CFGetTypeID===%lu",CFGetTypeID(str2));

    //
    CFStringRef str3 = CFSTR("456");
    NSString *str4 = (__bridge NSString *)str3;
上一篇 下一篇

猜你喜欢

热点阅读