将AppDelegate.m更改为.mm时出错

时间:2015-01-21 11:59:07

标签: ios objective-c

我在从.m更改为.mm扩展名时遇到问题。我有一个appdelegate课程。最初它是.m,但是为了包含c ++代码,我已将其更改为.mm但我在行 CFArrayRef myArray = CNCopySupportedInterfaces();和CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray,0));

错误

1.使用未声明的标识符CNCopySupportedInterfaces

2.使用未声明的标识符CNCopyCurrentNetworkInfo

-(NSString*)getWifiInfo
{
    CFArrayRef myArray = CNCopySupportedInterfaces();
    CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));
    //NSLog(@"Connected at:%@",myDict);
    NSDictionary *myDictionary = (__bridge_transfer NSDictionary*)myDict;
    //NSString * BSSID = [myDictionary objectForKey:@"BSSID"];
    NSString * SSID = [myDictionary objectForKey:@"SSID"];

    return SSID;
    //NSLog(@"ssid is %@",SSID);
    // Override point for customization after application launch.
}

我已经导入,但没有解决我的问题。

1 个答案:

答案 0 :(得分:-1)

您不需要将应用程序代理更改为.mm。 "的 CNCopySupportedInterfaces "和" CNCopyCurrentNetworkInfo "都在框架 SystemConfiguration / CaptiveNetwork.h 中声明。此外,如果要检查方法中使用的所有其他对象,您会发现所有这些对象都是Objective-C框架的一部分。

在其他情况下你应该使用.mm,比如包括一个C ++库。事实并非如此。只要您没有任何需要使用Obj-C ++编译器的C ++依赖项,您就可以在.m文件中使用C ++语法而无需担心。

将类更改回.m,确保将SystemConfiguration框架添加到项目中(tutorial here),然后在Application委托中导入CaptiveNetwork:

#import <SystemConfiguration/CaptiveNetwork.h>

我能够在自己的app委托中构建你的方法。