如何跨方法使用外部

时间:2019-05-22 20:07:57

标签: objective-c

我希望有人能提供帮助。

我正在objC中编写一个cordova插件,以连接到名为gizwits的IOT平台。

我试图在.h文件中声明一个extern变量,然后在.m的一个方法中分配一个值,然后最终在另一个方法中调用该值。但是,当我在final方法中调用值时,我总是得到null。

.h文件

extern NSString *const uid;
    extern NSString *const token;

.m文件

    - (void)pushSSID:(CDVInvokedUrlCommand*)command
{

    NSString* ssid = [command.arguments objectAtIndex:0];
    NSString* key = [command.arguments objectAtIndex:1];
    NSString *const uid = [command.arguments objectAtIndex:2];
    NSString *const token= [command.arguments objectAtIndex:3];
    NSLog(@"%@", uid);//this displays my uid
    NSLog(@"%@", token); //this displays my token

回调

    -(NSString *)wifiSDK:(GizWifiSDK *)wifiSDK
    didSetDeviceOnboarding:(NSError *)result
            mac:(NSString *)mac
            did:(NSString *)did
     productKey:(NSString *)productKey {

        NSLog(@"%@", uid); // always null
        NSLog(@"%@", token); // always null

回调始终为uid&令牌返回null。仅当在pushSSID方法中设置了该值时,才运行回调。

如果有人有任何建议,我将非常感激。谢谢

1 个答案:

答案 0 :(得分:0)

行:

NSString *const uid = [command.arguments objectAtIndex:2];
NSString *const token= [command.arguments objectAtIndex:3];

未设置全局外部变量。这些是单独的局部变量。

将这两行更改为:

uid = [command.arguments objectAtIndex:2];
token= [command.arguments objectAtIndex:3];

这将为全局变量设置值。