JSPatch 的坑

返回值为 Struct 类型时

通过 [methodSignature methodReturnType] 获取到 CMDeviceMotion 的gravity 属性 返回值类型 为 {?=ddd}。

而正常情况下,例如,我们获取 view的frame,返回值类型为 {CGRect={CGPoint=dd}{CGSize=dd}}

原因:当定义 struct 结构体时,如下定义,则 [methodSignature methodReturnType] 检测到该返回值类型为 {?=ddd}
因为下面这样只是定义了一个tag name 为 CMAcceleration 的结构体,tag name 不是类型名,所以methodReturnType获取不到该类型名

typedef struct {
    double x;
    double y;
    double z;
} CMAcceleration;

如果是下面定义struct 结构体,则可以正确检测返回值类型

struct CMAcceleration {
    double x;
    double y;
    double z;
};
typedef struct CMAcceleration CMAcceleration;

JavaScriptCore 是垃圾回收,OC则是引用计数

JavaScriptCore 会持有oc 对象,直到JavaScriptCore执行内存池清理时才会释放。如果你在javascript 代码中创建了
一个很大的oc对象,该对象的生命周期并不如你想象的及时释放。

转载于:https://www.cnblogs.com/YungMing/p/6165080.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值