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对象,该对象的生命周期并不如你想象的及时释放。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号