请选择 进入手机版 | 继续访问电脑版
帖子
帖子
用户
博客
课程
显示全部楼层
90
帖子
2
勋章
2237
Y币

[插件开发] IOS模块开发同步方法不能返回long类型的数字

[复制链接]
发表于 2017-7-26 21:10:41
本帖最后由 angelshelter 于 2017-7-26 22:27 编辑

先上文档

D458F2CD-2D34-4B43-A4AC-531621A362DF.png
这里说返回的是NSNumber类型的,我同步方法里面方法的返回值就设为NSNumber,然后我返回NSIntegerMax的话,前端网页是可以读取到2147483647(int的最大值),

然后我如果返回 NSIntegerMax + 1的话,前端读取到的是-2147483648(越界了)。

然后我把IOS里面的方法的返回值改为long结果也是一样。

然后我想试一下字典行不行,返回的也是负数:{“time”: -2147483648}。

所以,我希望官方支持IOS同步方法能支持long类型返回。

比如时间戳就是一个比较大的数字 :1501074538123  对应于  2017/7/26 21:8:58

如果没办法解决的话,我只能传字符串过去了,不过这样的话,Android和IOS的调用方法就有差异了。一个返回的是long , 一个返回的是字符串。



顺便提一个需求:


模块需要在方法访问前做一个初始化工作(有点耗时),文档里有提到用launchClassMethod可以实现,确实。

但是这个是需要一个类方法,我初始化的时候,需要读取config里面的配置,用的

  1. NSDictionary *feature = [self getFeatureByName:@"netTime"];
  2.         url = [feature stringValueForKey:@"url" defaultValue:nil];
复制代码


这个getFeatureByName是实例方法,类方法不能调用实例方法,有没有什么好的解决办法????



28
帖子
1
勋章
1万+
Y币
- (NSNumber *)timestamp: (NSDictionary *)param {
    long long time = [NSDate date].timeIntervalSince1970*1000;
    return @(time);
}


#import "UZAppDelegate.h"

NSDictionary *feature = [theApp getFeatureByName: @"netTime"];
90
帖子
2
勋章
2237
Y币
技术咨询-Kenny 发表于 2017-7-27 10:10
- (NSNumber *)timestamp: (NSDictionary *)param {
    long long time = [NSDate date].timeIntervalSinc ...

谢谢,你的回答完全正确。原来long long才是真正的long。
您需要登录后才可以回帖 登录

本版积分规则