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。
分享到:
相关推荐
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", ...
本文将深入探讨如何在iPhone应用程序中操作通讯录,基于标题“iPhone 手机通讯录有关访问”以及描述“iPhone 有关通讯录内容的操作”,我们将详细解析这一主题下的关键知识点。 ### 通讯录在iPhone应用中的作用 ...
#define NSString2CFSTR(nsStr) ((__bridge CFStringRef)(nsStr)) ``` 这两个宏分别用于CFString到NSString和NSString到CFString的转换。 10. **内存管理宏**: 在MRC(Manual Reference Counting)环境下,...
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系统被抓包的方法 防止iOS系统被抓包是一个非常重要的安全问题。iOS系统可以通过各种抓包工具,例如Fiddler、Charles等,来获取APP发送的API,...我们可以通过检测代理和防止抓包来保护我们的APP和用户信息。
NSDictionary *info = CNCopyCurrentNetworkInfo((__bridge CFStringRef)interface); if (info) { NSDictionary *addresses = info[@"BSSID"]; for (NSString *key in addresses) { if ([key isEqualToString:@...
在iOS开发中,URL编码和解码是处理网络请求时必不可少的部分。URL(统一资源定位符)有时会包含特殊字符,这些字符在HTTP协议中可能具有特殊含义,因此需要进行编码以确保数据的正确传输。本文将详细讲解如何在...
CFStringRef cfString = CFStringCreateWithCharacters(kCFAllocatorDefault, "Hello, ARC", 12); NSString *nsString = (__bridge NSString *)cfString; // 使用 nsString CFRelease(cfString); ``` 这里的`__...
info = CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam); if (info && [info objectForKey:@"BSSID"]) { NSString *macAddress = [info objectForKey:@"BSSID"]; // BSSID通常格式为XX:XX:XX:XX:XX:XX,...
CFStringRef uuidString = CFUUIDCreateString(NULL, uuidObj); CFRelease(uuidObj); NSString *uuid = (NSString *)CFBridgingRelease(uuidString); ``` `CFUUID`生成的UUID每次都是唯一的,不会因应用卸载而改变。...
3. `SSIDData`:SSID的原始数据形式,通常与SSID键的值相同,但以NSData对象表示。 4. `RSSI`:信号强度,以dBm(分贝毫瓦)为单位。 5. `Security`:表示网络的安全类型,如WEP、WPA、WPA2等。 在非ARC(自动引用...
CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault, uuidObj); ``` 4. 转换为Objective-C的NSString: ```objc NSString *uuidStringObj = (__bridge NSString *)uuidString; ``` 5. 打印或使用生成...
iOS开发中的AddressBook框架是用来访问和管理用户设备上的联系人数据的。在iOS应用程序中,如果需要读取用户的通讯录信息,就需要使用AddressBook API。本文将详细介绍如何在iOS开发中实现读取addressbook的实例。 ...
CFStringRef cfString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)picDataString,NULL,CFSTR(:/?#[]@!$&'()*+,;=),kCFStringEncodingUTF8); NSString *baseString = [NSString ...
以下是如何在iOS工程中判断当前网络环境是IPv4还是IPv6的详细步骤和相关知识点。 首先,我们需要理解IPv4和IPv6的区别。IPv4(Internet Protocol Version 4)是互联网上最广泛使用的协议,使用32位地址,最多可以...
在iOS开发中,有时我们需要获取设备当前连接的WiFi网络信息,包括WiFi的SSID(服务集标识,即WiFi名称)和设备的IP地址。本篇文章将详细介绍如何通过Objective-C实现这一功能。 首先,为了获取设备的本地IP地址,...