![]() 今日分享:用Lua给你的程序打patch(续) 昨天仔细阅读了一下大众点评的屠毅敏开源的WaxPatch项目,他是通过修改wax的实现达到动态打Patch的功能。主要是修改了wax中的wax_instance.m文件。具体做法是:在wax中加入了class_replaceMethod来替换原始实现。 由于担心使用该API的审核问题,我还查了一下,被广泛使用的AFNetworking网络库也使用了class_replaceMethod方法(AFHTTPRequestOperation.m文件第90行)所以使用该方法应该是安全的。 感兴趣的可以好好阅读一下这个示例项目,源码地址是:https://github.com/mmin18/WaxPatch 屠毅敏也将相关文章放到github上,地址是:https://github.com/mmin18/Create-a-More-Flexible-App,在该文章中,屠毅敏不仅介绍了iOS动态打Patch的原理和示例代码,还介绍了在Android开发中相关的经验。该文章也发表于2012年9月的《程序员》杂志中,值得一读。 另外有人回复关心使用wax后的app体积增涨,我拿公司的项目简单测试了一下,增加wax的依赖后,体积增加了300K,应该算是可以承受的范围。 还有不少同学的回复中表达了对于苹果审核的担心,对此我觉得: 1. Lua在iOS游戏中被广泛使用。 2. wax在大众点评的iOS版被明确使用。 3. 苹果在审核时会扫描App应用的API列表,而wax项目并不含任何私有API的调用。 4. 苹果对于应用的审核态度和尺度一直在变化。不同审核员的尺度也不太一样。 综上,使用wax或WaxPatch应该是有一定的审核风险的,但是应该问题不大。如果有同学在使用wax或waxPatch审核通过了(或被拒了),麻烦请告诉我一声,我可以及时告知大家。 最后说一下我对wax项目的看法,如果你去github上看wax项目的提交记录的话,就会发现wax已经2年没有更新了。基本上对于公司的正式项目,使用Lua写Objective-C还是不太合适,所以大众点评也只是用Lua来打些Patch而已。 业界对于对其它语言来开发iOS程序的尝试一直都没有停止过,除了上面提到的wax,还有现在比较有名的PhoneGap框架,是使用Javascript来开发iOS程序,当然,Javascript也可以通过服务端动态升级,以此来绕过苹果审核的限制。不久前,业界还出了一个名为RubyMotion的框架(http://www./),可以使用Ruby来开发iOS程序。 对于PhoneGap框架,我在网易工作时,听闻有一些项目使用它,结果做出来UI体验非常差,最终只有换成原生的。RubyMotion是收费的,没用过不好评价。不过在现阶段,我还是不太看好这些技术,或许以后手机的CPU和GPU牛逼了,这些框架才能真正流行起来。 今日消息: 1. 在我刚说完微信的归档性太弱,不能查看历史消息的第二天,腾讯就更新了微信,加入了查看历史消息的功能。具体做法是: 点击屏幕右上角的人形小图标,然后在出现的界面中选择“查看历史消息”的按钮即可。 2. 不少同学回复说,同意微信公共平台适合发心灵鸡汤不适合深入讨论技术。但是我确实没什么鸡汤可发,所以说以后就打算有些干货时再发就行了。频率保持每周1-2次。 3. 大家在iOS开发中遇到什么问题也可以问我,但希望问之前能先Google一下。如果觉得在微信上打字太麻烦,也可以在微博上给我发私信,我的新浪微博是 @唐巧_boy 。 |
|