皮皮网

【bim图源码】【内核绘制源码】【pg源码学习】cfstringref源码

2024-11-30 06:58:19 来源:海马源码

1.cube escape在ios怎么设置中文?
2.CFStringRef是什么编程语言
3.CFStringRef和NSString
4.怎样获取wifi列表
5.如何获取wifi列表

cfstringref源码

cube escape在ios怎么设置中文?

       cube escape在ios设置中文的办法:

       使用CFStringRef的方法:

       sUrl = (NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)sUrl, nil, nil, kCFStringEncodingUTF8);

       使用NSString的方法:

       NSString* string2 = [string1stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

       NSString* string1 = [string2stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]。

CFStringRef是bim图源码什么编程语言

       CFStringRef,应该是内核绘制源码iOS或MacOS App下用到的东西,隶属于CoreFundation框架,pg源码学习该框架由苹果公司掌管。delphi源码打包

       CFStringRef是挖软件源码一个内部指向CFString对象的一个引用。

       使用该结构的语言有:C++,Objective-C,Swift

CFStringRef和NSString

       CFStringRef a = CFSTR("a");

        NSString *b = @"b";

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

        1、CFSTR分配出来的字符串对象是不能自己释放的,如果你释放了下次在使用就会使用到一个野对象;

        2、多线程使用可能会出问题,因为全局的字典是没有锁的。

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

        三、相互转换

        CFStringRef aCFString = (CFStringRef)aNSString;

        NSString *aNSString = (NSString *)aCFString;

怎样获取wifi列表

       只能获取当前的SSID

       - (id)fetchSSIDInfo

       {

        NSString *currentSSID = @"";

        CFArrayRef myArray = CNCopySupportedInterfaces();

        if (myArray != nil){

        NSDictionary* myDict = (__bridge NSDictionary *) CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));

        if (myDict!=nil){

        currentSSID=[myDict valueForKey:@"SSID"];

        } else {

        currentSSID=@"<<NONE>>";

        }

        } else {

        currentSSID=@"<<NONE>>";

        }

        NSArray *ifs = (__bridge id)CNCopySupportedInterfaces();

        NSLog(@"%s: Supported interfaces: %@", __func__, ifs);

        id info = nil;

        for (NSString *ifnam in ifs) {

        info = (__bridge id)CNCopyCurrentNetworkInfo((CFStringRef)CFBridgingRetain(ifnam));

        if (info && [info count]) {

        break;

        }

        }

        return info;

       }

如何获取wifi列表

       åªèƒ½èŽ·å–当前的SSID

       - (id)fetchSSIDInfo

       {

        NSString *currentSSID = @"";

        CFArrayRef myArray = CNCopySupportedInterfaces();

        if (myArray != nil){

        NSDictionary* myDict = (__bridge NSDictionary *) CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));

        if (myDict!=nil){

        currentSSID=[myDict valueForKey:@"SSID"];

        } else {

        currentSSID=@"<<NONE>>";

        }

        } else {

        currentSSID=@"<<NONE>>";

        }

        NSArray *ifs = (__bridge id)CNCopySupportedInterfaces();

        NSLog(@"%s: Supported interfaces: %@", __func__, ifs);

        id info = nil;

        for (NSString *ifnam in ifs) {

        info = (__bridge id)CNCopyCurrentNetworkInfo((CFStringRef)CFBridgingRetain(ifnam));

        if (info && [info count]) {

        break;

        }

        }

        return info;

       }