JPMemory 使用文档

JPMemory 提供了内存操作相关的系列函数,使 JS 脚本可以进行内存/指针操作。

扩展加载

  1. 把 JPMemory.h / JPMemory.m 加入项目
  2. JS 脚本使用前调用 require('JPEngine').addExtensions(['JPMemory'])

接口文档

memset() / memmove() / memcpy() / malloc() / free()

与 C 同名函数作用/参数/用法相同:

//js
var o = malloc(1024)
memset(o, 1, 1024)
free(o)

pval(pointer)

获取指针对应的 NSObject 对象

//OC
@implementation JPTestObject
- (void)passingErrorPointer:(NSError **)errorPointer {
    NSError *error = *errorPointer;
    //use error
}
@end
//js
defineClass('JPTestObject', {
    passingErrorPointer: function(errorPointer) {
        var error = pval(errorPointer)
        //use error
    }
})
pvalBool(pointer)

获取 BOOL 指针的值

//OC
@implementation JPTestObject
+ (void)passingBoolPointer:(BOOL *)p {
    BOOL b = *p;
}
@end
...
BOOL b = YES;
[JPTestObject passingBoolPointer:&b];
//js
defineClass('JPTestObject', {
    passingBoolPointer: function(p) {
        var b = pvalBool(p)
    }
})

若需要用到取其他类型的指针值,例如 int float double 等,可以自行在 JPMemory 上参照 pvalBool() 加上相关函数。

getPointer(obj)

获取指针地址,相当于 & 符号

//OC
id obj = [[NSObject alloc] init];
void *pointer = &obj;
void *pool = malloc(1024);
void *poolPointer = &pool;
//js
var obj = require('NSObject').alloc().init()
var pointer = getPointer(obj)
var pool = malloc(1024)
var poolPointer = getPointer(pool)
sizeof(typename)

获取类型大小

var obj = require('NSObject').alloc().init()
console.log(sizeof('id'))
console.log(sizeof('CGRect'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值