`
muyu114
  • 浏览: 135182 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

和CFStringRef相关的CFSTR与和NSString相关的@

 
阅读更多

CoreFoundation里面的CFStringRef和NSString*是可以直接转换的,两种也都有一个相似的用来直接赋常量的操作。例如:

CFStringRef a = CFSTR("a");
NSString *b = @"b";

CFSTR是一个宏,这个宏的定义可能是CFStringMakeConstantString,也可能是__builtin___CFStringMakeConstantString。如果是CFStringMakeConstantString,看看CFStringMakeConstantString的实现就会明白,CFSTR("a")是存放在一个全局字典里面的,下次用到CFSTR("a")的时候先查字典里面有没有,如果有就是用存在的,如果没有则分配一个,并且放到字典里面。

所以这里有两个需要注意的,一:CFSTR分配出来的字符串对象是不能自己释放的,如果你释放了下次在使用就会使用到一个野对象;二:多线程使用可能会出问题,因为全局的字典是没有锁的。

而NSString的@有些不一样,应该和__builtin___CFStringMakeConstantString有些类似,允许你多线程使用,同样也不需要你自己去release,可以理解为b是一个autorelease的对象,系统会自己自动收回b。如果想长时间持有b那就retain,但不要忘了release。

他们俩直接类型转换就可以了,比如
CFStringRef aCFString = (CFStringRef)aNSString;
NSString *aNSString = (NSString *)aCFString;

分享到:
评论

相关推荐

    iOS中常用的宏定义总结

    #define NSString2CFSTR(nsStr) ((__bridge CFStringRef)(nsStr)) ``` 这两个宏分别用于CFString到NSString和NSString到CFString的转换。 10. **内存管理宏**: 在MRC(Manual Reference Counting)环境下,...

    iphone 手机通讯录有关访问

    本文将深入探讨如何在iPhone应用程序中操作通讯录,基于标题“iPhone 手机通讯录有关访问”以及描述“iPhone 有关通讯录内容的操作”,我们将详细解析这一主题下的关键知识点。 ### 通讯录在iPhone应用中的作用 ...

    iOS 开发笔记

    NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", ...

    iphone开发常用代码

    CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8 ); [result autorelease]; return result; } ``` 该函数接收一个`NSString`类型的参数`string`,返回经过URL编码后的字符串。编码过程中排除了部分特殊...

    IOS常用文档

    CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8); [result autorelease]; return result; } ``` #### 功能描述 此方法用于将传入的字符串进行URL编码。它使用`CFURLCreateStringByAddingPercentEscapes`...

    汉字转成拼音

    "汉字转成拼音"这个主题涉及到的是自然语言处理(NLP)的一个子领域,它主要依赖于编程语言Objective-C(简称objc)的相关库和技术。Xcode是苹果公司开发的集成开发环境,用于编写Objective-C代码。 在Objective-C...

    QTSSDictionary理解

    QTSSDictionary是...总之,QTSSDictionary是QuickTime Streaming Server中处理元数据和配置信息的重要工具,通过学习和实践相关的示例代码,我们可以更好地掌握其功能和使用方法,从而在实际开发中更加得心应手。

    KeywordTest

    可以设置lable的字体-(void)setText:(NSString *)text WithFont:(UIFont *)font AndColor:(UIColor *)color{ self.text = text; int len = [text length]; NSMutableAttributedString *mutaString = [...

    IOS中对Url进行编码和解码示例

    在iOS开发中,URL编码和解码是处理网络请求时必不可少的部分。URL(统一资源定位符)有时会包含特殊字符,这些字符在HTTP协议中可能具有特殊含义,因此需要进行编码以确保数据的正确传输。本文将详细讲解如何在...

    获取本机IP

    NSDictionary *info = CNCopyCurrentNetworkInfo((__bridge CFStringRef)interface); if (info) { NSDictionary *addresses = info[@"BSSID"]; for (NSString *key in addresses) { if ([key isEqualToString:@...

    IOS获取设备MAC地址及MD5加密

    info = CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam); if (info && [info objectForKey:@"BSSID"]) { NSString *macAddress = [info objectForKey:@"BSSID"]; // BSSID通常格式为XX:XX:XX:XX:XX:XX,...

    ARC探秘:Objective-C中的自动引用计数革命

    CFStringRef cfString = CFStringCreateWithCharacters(kCFAllocatorDefault, "Hello, ARC", 12); NSString *nsString = (__bridge NSString *)cfString; // 使用 nsString CFRelease(cfString); ``` 这里的`__...

    利用SSKeyChain存储秘钥以及生成UUID

    CFStringRef uuidString = CFUUIDCreateString(NULL, uuidObj); CFRelease(uuidObj); NSString *uuid = (NSString *)CFBridgingRelease(uuidString); ``` `CFUUID`生成的UUID每次都是唯一的,不会因应用卸载而改变。...

    获取UUID源码.zip

    CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault, uuidObj); ``` 4. 转换为Objective-C的NSString: ```objc NSString *uuidStringObj = (__bridge NSString *)uuidString; ``` 5. 打印或使用生成...

    在ios工程中如何判断当前网络环境是IPV6还是IPV4 源码下载

    以下是如何在iOS工程中判断当前网络环境是IPv4还是IPv6的详细步骤和相关知识点。 首先,我们需要理解IPv4和IPv6的区别。IPv4(Internet Protocol Version 4)是互联网上最广泛使用的协议,使用32位地址,最多可以...

    IOS 开发之读取addressbook的实现实例

    iOS开发中的AddressBook框架是用来访问和管理用户设备上的联系人数据的。在iOS应用程序中,如果需要读取用户的通讯录信息,就需要使用AddressBook API。本文将详细介绍如何在iOS开发中实现读取addressbook的实例。 ...

    IOS 常见内存泄漏以及解决方案

    CFStringRef cfString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)picDataString,NULL,CFSTR(:/?#[]@!$&'()*+,;=),kCFStringEncodingUTF8); NSString *baseString = [NSString ...

    CoreFoundation.h_以及同目录下所有头文件

    CFString支持Unicode字符集,与Objective-C的`NSString`类有很好的互操作性,是处理文本数据的关键组件。 3. **CFDictionary**:`CFDictionary.h`包含`CFDictionaryRef`,它是一个键值对的集合。CFDictionary提供了...

    怎么防止ios系统被抓包?防止ios系统被抓包的方法

    防止iOS系统被抓包的方法 防止iOS系统被抓包是一个非常重要的安全问题。iOS系统可以通过各种抓包工具,例如Fiddler、Charles等,来获取APP发送的API,...我们可以通过检测代理和防止抓包来保护我们的APP和用户信息。

Global site tag (gtag.js) - Google Analytics