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;
分享到:
相关推荐
#define NSString2CFSTR(nsStr) ((__bridge CFStringRef)(nsStr)) ``` 这两个宏分别用于CFString到NSString和NSString到CFString的转换。 10. **内存管理宏**: 在MRC(Manual Reference Counting)环境下,...
本文将深入探讨如何在iPhone应用程序中操作通讯录,基于标题“iPhone 手机通讯录有关访问”以及描述“iPhone 有关通讯录内容的操作”,我们将详细解析这一主题下的关键知识点。 ### 通讯录在iPhone应用中的作用 ...
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", ...
CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8 ); [result autorelease]; return result; } ``` 该函数接收一个`NSString`类型的参数`string`,返回经过URL编码后的字符串。编码过程中排除了部分特殊...
CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8); [result autorelease]; return result; } ``` #### 功能描述 此方法用于将传入的字符串进行URL编码。它使用`CFURLCreateStringByAddingPercentEscapes`...
"汉字转成拼音"这个主题涉及到的是自然语言处理(NLP)的一个子领域,它主要依赖于编程语言Objective-C(简称objc)的相关库和技术。Xcode是苹果公司开发的集成开发环境,用于编写Objective-C代码。 在Objective-C...
QTSSDictionary是...总之,QTSSDictionary是QuickTime Streaming Server中处理元数据和配置信息的重要工具,通过学习和实践相关的示例代码,我们可以更好地掌握其功能和使用方法,从而在实际开发中更加得心应手。
可以设置lable的字体-(void)setText:(NSString *)text WithFont:(UIFont *)font AndColor:(UIColor *)color{ self.text = text; int len = [text length]; NSMutableAttributedString *mutaString = [...
在iOS开发中,URL编码和解码是处理网络请求时必不可少的部分。URL(统一资源定位符)有时会包含特殊字符,这些字符在HTTP协议中可能具有特殊含义,因此需要进行编码以确保数据的正确传输。本文将详细讲解如何在...
NSDictionary *info = CNCopyCurrentNetworkInfo((__bridge CFStringRef)interface); if (info) { NSDictionary *addresses = info[@"BSSID"]; for (NSString *key in addresses) { if ([key isEqualToString:@...
info = CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam); if (info && [info objectForKey:@"BSSID"]) { NSString *macAddress = [info objectForKey:@"BSSID"]; // BSSID通常格式为XX:XX:XX:XX:XX:XX,...
CFStringRef cfString = CFStringCreateWithCharacters(kCFAllocatorDefault, "Hello, ARC", 12); NSString *nsString = (__bridge NSString *)cfString; // 使用 nsString CFRelease(cfString); ``` 这里的`__...
CFStringRef uuidString = CFUUIDCreateString(NULL, uuidObj); CFRelease(uuidObj); NSString *uuid = (NSString *)CFBridgingRelease(uuidString); ``` `CFUUID`生成的UUID每次都是唯一的,不会因应用卸载而改变。...
CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault, uuidObj); ``` 4. 转换为Objective-C的NSString: ```objc NSString *uuidStringObj = (__bridge NSString *)uuidString; ``` 5. 打印或使用生成...
以下是如何在iOS工程中判断当前网络环境是IPv4还是IPv6的详细步骤和相关知识点。 首先,我们需要理解IPv4和IPv6的区别。IPv4(Internet Protocol Version 4)是互联网上最广泛使用的协议,使用32位地址,最多可以...
iOS开发中的AddressBook框架是用来访问和管理用户设备上的联系人数据的。在iOS应用程序中,如果需要读取用户的通讯录信息,就需要使用AddressBook API。本文将详细介绍如何在iOS开发中实现读取addressbook的实例。 ...
CFStringRef cfString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)picDataString,NULL,CFSTR(:/?#[]@!$&'()*+,;=),kCFStringEncodingUTF8); NSString *baseString = [NSString ...
CFString支持Unicode字符集,与Objective-C的`NSString`类有很好的互操作性,是处理文本数据的关键组件。 3. **CFDictionary**:`CFDictionary.h`包含`CFDictionaryRef`,它是一个键值对的集合。CFDictionary提供了...
防止iOS系统被抓包的方法 防止iOS系统被抓包是一个非常重要的安全问题。iOS系统可以通过各种抓包工具,例如Fiddler、Charles等,来获取APP发送的API,...我们可以通过检测代理和防止抓包来保护我们的APP和用户信息。