iOS小技巧
最近开始记录下自己开发遇到的问题,如果解决了就会记录下来,以便自己日后回顾工作。
测试妹子给我提了一个问题是视图遮挡了,我一看,确实会遮挡,我就加了下面的这段代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
最近开始记录下自己开发遇到的问题,如果解决了就会记录下来,以便自己日后回顾工作。
测试妹子给我提了一个问题是视图遮挡了,我一看,确实会遮挡,我就加了下面的这段代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
任何语言的核心都会描述这门语言的最基本的工作原理。而描述的内容又涉及到这门语言的语法、操作符、数据类型、内置功能等用于构建复杂解决方案的基本概念。
React-Native 帮助在原生平台打造世界一流的应用体验,使用基于JavaSript
和React的结合的开发经验。React-Native的宗旨是更有效的开发全平台的应用。
在React-Native你能使用标准平台组件如:iOS的UITabBar
以及Android
的Drawer
。这个给了你APP标准统一的外观,使用这个平台的生态系统,去保持高质量。这些组件能轻易的嵌入到你的APP中使用,和React组件是差不多的,例如:TabBariOS
和DrawerLayoutAndroid
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
所有的Javascript
应用程序代码以及原生平台的操作都是异步的,并且原生模块也能够使用额外的线程。这意味着我们能关闭主线程的图像解码,后台把图片保存到磁盘,渲染文字和计算布局而不会阻塞UI。这样一来,React-Native应用自然流畅性和响应。通信也完全序列化,这使我们能够充分利用Chrome
开发者工具来调试Javascript
的运行时完整的应用程序,无论是模拟器还是真实设备。
今年我结束了我长达4年多的北漂生活,也同时结束了我长达4年多的外包工作生涯。有时候和现在的同事聊天,他们问:你当初在北京,为什么想到来上海呢?太多太多的原因,我承认我擅自选择北京,来上海这个决定,非常冲动,但是现在看来这个决定并不是多么愚蠢。
我就按照时间展开回忆吧!
那是2011年的4月15日,我们一行5人从学校踏上了北漂的列车。这是我北漂的开始,那晚的我在火车座位上度过,当时怀揣着对未来的命运,心底对北京很兴奋也很迷茫。第二天,我的初中同学一大早就来车站接我,我特感恩是我念了这么多年书,唯一的用处就是现在走到任何城市都有小伙伴陪我。 那是我北漂的开始。我开始工作了,终于不用家里每月寄钱给我了,我可以自己养活自己了。我其实一开始是很没有工作责任感的人,我刚加入的团队,由于我们团队boss即将离职,于是我作为一个刚进来的新人,没有安排导师,也没有分配任务,完全放养。我当时乐在其中,和另外2个同学一起在这个公司实习。他们没有我这么幸运,他们分在了A组每天分配了很多活,我没有活可干。转眼在公司待了2月,我B组Leader 终于离职了,而且公司也到了淡季,7月份公司不裁人以给员工放2月假不发薪水的方式逼很多人跳槽,我另外2个同学所在的B组老大决定不要他们,于是他们两个人失业了,而我却不知道为什么被留了下来。但是我想他们都走了,我留下来多没意思啊。(我很重感情 = =|)于是我和当时的团队负责人说我也不想做测试了,申请辞职。不顾Leader强烈挽留毅然决然的和小伙伴们一起失业。我当时真的没有想到这个决定导致的后果非常严重。
Read on →iOS产品开发之中常常会遇到这种情况: 新版本上线后发现有个严重的bug,可能会导致crash率激增,可能会使网络请求无法发出,这时能做的只是赶紧修复bug然后提交等待漫长的AppStore审核,再盼望用户快点升级,付出巨大的人力和时间成本,才能完成此次bug的修复。
JSPatch的出现解决了这样的问题,只需要在项目中引入极小的JSPatch引擎,就可以使用JavaScript语言调用Objective-C的原生接口,获得脚本语言的能力:动态更新iOS APP,替换项目原生代码、快速修复bug。
JSPatch核心主要是JSBinding和Objective-C中的runtime技术。一方面,它采用Apple在iOS7中发布的JavaScriptCore.framework作为Javascript引擎解析JavaScript脚本,执行JavaSript代码并与Objective-C端的代码进行桥接。另一方面则是使用Objective-C runtime中的method swizzling的方式达到使用JavaScript脚本动态替换原有Objective-C方法的目的,并利用ForwardInvocation标准消息转发机制使得在JavaScript脚本中调用Objective-C的方法成为可能。
Read on →下面这篇文档收集了一系列编写高性能 Swift 代码的要诀和技巧。文档的目标读者是编译器和标准库开发人员。 文档中的一些技巧可以帮助提升您的 Swift 程序质量,使您的代码不容易出错且可读性更好。显式地标记最终类和类协议是两个显而易见的例子。 然而文档中还有一些技巧是不符合规矩的,扭曲的,仅仅解决一些比编译器或语言的特殊的临时性需求。文档中的很多建议来自于多方面的权衡,例如:运行时、字节大小、代码可读性等等。
第一个应该做的事情就是启用优化。Swift 提供了三种不同的优化级别:
随着Swift的开源,苹果开发者迎来了新的开端。其实这个是我一直想要表达的,随着对Swift这个语言的深入了解,越发感觉到Swift的魅力。Swift是系统编程语言,现在C语言之所以能统治底层开发的最重要原因是C规范统一的ABI,使其能做到与汇编程序无缝衔接。而Swift的ABI兼容C(并不包括name mangling部分)。基于强大的llvm生成具体平台代码。不仅仅作为Objective-C的翻译。
通过开发Swift,了解到Swift文件的中间编译结果(介于Swift代码合llvm ir)是SIL。SIL我下一章着重介绍。这张暂时把焦点放在Swift的ABI。那么什么是ABI,你一定很陌生吧,那么对于API呢,你是不是明白了什么?
ABI的全称是Application Binary Interface。翻译过来就是应用二进制接口,描述了应用程序和操作系统或其他应用程序之间的低级接口。
ABI涵盖了各个细节: Read on →
如果把人生比作跑步的话,我们都在用自己的节奏和姿势在完成比赛。这些跑步的技巧可能是小时候从老师,朋友,家人那得来的。随着时间的流逝,我们习惯了这种跑步的技能,看见那些跑得快的,会羡慕;跑得慢的,会不屑;跑得别扭的,会当作笑料。但是自己跑得怎么样,却很少关心。为什么要跑这条道?为什么这么慢?为什么这么累?
我们很难做到客观,尤其是面对自己的时候,那些缺点、曾经犯的错会自动进入盲区,躲避意识的雷达。尽管如此,我还是找到了数量可观的不足,才发现,原来这么些年,我一直在以这么别扭、丑陋的姿势在跑步。