jspatch基本使用

JSPatch是GitHub上一个开源的框架,其可以通过Objective-C的run-time机制动态的使用JavaScript调用与替换项目中的Objective-C属性与方法。其框架小巧,代码简洁,并且通过系统的JavaScriptCore框架与Objective-C进行交互,这使其在安全性和审核风险上都有很强的优势。Git源码地址:https://github.com/bang590/JSPatch。

引入#import "JPEngine.h"

增加 libz.1.tbd , JavaScriptCore.framework

实现

[JPEngine startEngine];

NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"js"];

NSString *script = [NSString stringWithContentsOfFile:sourcePath encoding:NSUTF8StringEncoding error:nil];

[JPEngine evaluateScript:script];

这样第一句你就已经完成了,下面看一下js 里面怎么写吧

1,添加按钮

var btn = require('UIButton').alloc().initWithFrame({x:0, y:100, width:100, height:100});

btn.setTitle_forState('lalala',0);

btn.addTarget_action_forControlEvents(self,"btnClicked",1<<6);

btn.setBackgroundColor(UIColor.blueColor());

self.view().addSubview(btw);


btnClicked: function() {

console.log('asasasa')

},

2,添加试图

var xView = UIView.alloc().init();

xView.setFrame({x:100, y:300, width:100, height:100});

xView.setBackgroundColor(UIColor.redColor());

self.view().addSubview(xView);

3,重写方法

initUIOne: function() {

var oneLabel = UILabel.alloc().initWithFrame({x:50, y:350, width:100, height:100});

oneLabel.setBackgroundColor(UIColor.purpleColor());

oneLabel.setText("99999");

self.view().addSubview(oneLabel);

},

4,重写类方法

defineClass('CollectionHight',{

},{

cellHeightcontent_cover: function(content, cover) {

return 1200;

}

})

5,获取私有变量

var rowMutAry = self.valueForKey("rowMutAry")

6,返回数组

return rowMutAry.count();

也许作者也觉得毕竟这个JSPatch语法 并不是一个正式的语种,大家不会投入太大的精力来仔细学习,所以作者本人也提供了一个简单粗暴的OC到JS直接转换地址: http://bang590.github.io/JSPatchConvertor/

但是可悲的是里面有的语法是错的..不过很多事可以借鉴的,改改就是对的了

你可能感兴趣的:(jspatch基本使用)