iOS deveplopment start with Swift 3.0

iOS deveplopment start with Swift 3.0

Swift 从2.2看到3.0, 但是一直找理由没有做一些实际的项目。节前比较清闲,准备先搭建一个基本的架子。原因是,我平时的大部分开发工作是 Golang 服务器开发,而Golang 是自带标准库的,因此基本看完语言后,就可以对着标准库写东西了。而 Swift 则是语言和库在设计之初就是分离的,因此看完语言基本上是不会走路的。

Swift 3.0当然不是现在性价比最高的入门选择,至少不是线上生产的最佳选择(2016.09.29)。因为去 github 逛一圈,会发现很多库都还没有适配3.0,无奈 Swift 每一个版本都如同一门新的语言,因此,要适配就不是修改三五行就可以搞定的了。本着踩坑然后填坑是最佳实践的原则,Swift 3.0倒是非常不错的入门之选。

准备搭建的架子要使用如下几个 lib:

  1. 日志:CocoaLumberjack
  2. 网络请求:Alamofire
  3. 调试:FLEX

CocoaLumberjack

需要修改 pod, 直接从 git 获取最新代码:

pod 'CocoaLumberjack/Swift', :git => 'https://github.com/CocoaLumberjack/CocoaLumberjack'

CocoaLumberjack 配置Xcode 8使用时,无法通过XcodeColors在 console 彩色输出。解决办法就是通过 emoji 表情:

Alamofire

直接install. 需要注意的是只支持 iOS 9+

FLEX

直接 install. 如果 import 提示找不到 module, 尝试重启 Xcode.

使用 example:

参考

Golang runtime error with macOS Sierra

Golang runtime error with macOS Sierra

If you are on Golang 1.6 or older, you may meet a panic error when you try to build or test your programme or anything else related with runtime:

fatal error: unexpected signal during runtime execution

There is a post about the issue in golang-nuts: [https://groups.google.com/forum/#!topic/golang-nuts/XaVT6fi1g30]. The bug is fixed in Golang 1.7, so just upgrade to 1.7 and you will be happy.

微信小程序——一种可能

微信小程序——一种可能

前天,微信开启了「微信小程序」(即之前张小龙口中的应用号)的公测,迅速刷爆朋友圈。微信如今的规模和对用户时间的霸气占有,让人不得不感慨——微信的每一个公告跟国务院发布通知一样,将影响整个行业。

看下张小龙对「微信小程序」的定义:

什么是小程序:小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不关心是否安装太多应用的问题。应用将无处不在,随时随地可用,但又无需安装卸载。

从技术上看,其实没什么新的东西。有人会觉得就是旧瓶装新酒——就是 web app(例如MacTalk 池建强)。但是,做技术的人一定要警惕的一点是:很多时候,应用本身发生的场景比技术本身更重要。例如 twitter 之于碎片时间,facebook 之于社交,微信之于移动互联网。

「小程序」要做的是移动互联网时代的浏览器——这似乎是一个老掉牙的结论。有人会说,这跟百度的轻应用、直达号,以及一众的浏览器内置的 web app 链接(导航)不就是换了一个名称吗。从实现原理和呈现形式上看,的确是这样。这种以 PC 互联网思路打造的占领流量入口型浏览器(广义上),都把一个假设当成了事实:我只要铺安装量,就有流量。这个假设不成立主要有两点原因:

  • 安装量与流量的确是正相关,但是手机的更周期比当年 PC 的更新周期可是短好几倍的。你真的铺的过来?你真的自信一个用户换了3次手机以后你的 app 还能留在他手机上?
  • 绝大部分用户平时使用的 app不超过10个,而80%的时间被一两个 app 占有。而微信已经拿到一张门票,这也就为「移动互联网时代的浏览器」铺垫了前提。其他 app 倒不是不能生存,但是能分到的流量十分有限。

「移动互联网时代的浏览器」有两层含义:

  1. 微信应用号是浏览器。能提供浏览器的是操作系统,微信就是小程序的操作系统。技术细节可以看可能吧作者阿禅罗列的微信提供的组件和接口。简而言之,微信用 native code 为微信小程序打造了一个浏览器,让 web app 可以调用一些 native 接口,具体是哪些哪——这个规则由微信自己制定!有人说,这不还是一个浏览器吗?是也不是。它的确尝试打造一个浏览器,但是这个浏览器依托的土壤异常贴合场景,异常肥沃。总所周知,手机上输入成本大。但是别忘了,一次启动唤醒使用的成本更大——这种成本不会体现在用户每次使用的痛苦上,但是却决定 app 的生死。提供启动唤醒率,排除产品类型和体验上的差距,开发者能做的无非是运营好内容,然后做推送召回。大家回忆两个常识数据:1. 微信公众号文章打开率比其他 app 打开率高多少?2.有app 的推送打开率能超过微信聊天推送打开率的吗?微信能做到这两个数据傲视群雄,不只是因为有张小龙,微信就是为这个场景而生——微信推送的都是用户之前订阅关心的,无论聊天内容还是公众号(从这个角度看,或许你能更加理解为何微信严控公众号每天推送条数了吧);你看 Fenng 不是已经关了微信推送,改为直接人肉轮询微信看消息了……想象一下,如果小程序可以在聊天中使用,是不是好有意思?
  2. 微信应用号是 web app store. 苹果的 app store 多少人眼红以及看不顺眼。但是无奈前面有两堵高墙:硬件和操作系统——能把这两个都玩好的目前也就水果公司一家。Google 无心手机硬件,专注做好了其中一个。微软两个都想拿下,两个都做得掺不忍赌——即使 Windows 占据了90%以上的桌面操作系统。微信两个都搞不定,所以,他选择让自己变成独特的浏览器,开辟一个自己定义规则的新世界——微信的聪明和可怕尽在于此。

有人说,手机上除了微信,还有其他风景。那是当然,只是那里缺少车水马龙的热闹与繁华,而这里提供了一种可能。