通过 JS 调用和改写 OC 方法最根本的原因是 Objective-C 是动态语言,OC 上所有方法的调用 / 类的生成都通过 Objective-C Runtime 在运行时进行。
通过JS代码覆盖,能够快速完美的修复线上程序bug。从此再也不用担心waiting review的时候发现了一个严重的bug,重新排队的问题。对于线上应用通过热补丁的方式进行修复。
具体调用方法如下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[JPEngine startEngine];
// exec js directly
// [JPEngine evaluateScript:@"\
// var alertView = require('UIAlertView').alloc().init();\
// alertView.setTitle('提示');\
// alertView.setMessage('我用的JS写的程序'); \
// alertView.addButtonWithTitle('OK');\
// alertView.show(); \
// "];
// exec js file from network
// NSData *data =[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://cnbang.net/test.js"]];
// NSString *script = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// NSLog(@"-----%@",script);
// [JPEngine evaluateScript:script];
// exec local js file
NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"js"];
NSString *script = [NSString stringWithContentsOfFile:sourcePath encoding:NSUTF8StringEncoding error:nil];
[JPEngine evaluateScript:script];
return YES;
}
灵活的使用方法降低了,iOS程序开发的难度。只要你熟悉JS编程也能轻松实现自己的iOS应用。
最近出现一些对于JSpatch开发的程序害怕AppStore审核不同的疑虑,对此我明确地告诉大家,AppStore不会因为你使用了JSpatch被拒。
最后感谢我们的bangbang bang (棒)同学的热心分享。