老司机 iOS 周报 #57 | 2019-03-04

栏目: IOS · 发布时间: 5年前

内容简介:老司机 iOS 周报,只为你呈现有价值的信息。你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到首先非常感谢

老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、 工具 等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

老司机周报 LOGO 全面更新!

首先非常感谢 @SketchK 为我们设计的十分贴合『老司机』一词的重金属风格 LOGO。几经波折,我们终于可以对外发布我们的全新 LOGO 了,而且版权已经注册并完成审批,希望这次不会再翻车!作为 LOGO 的设计者 @SketchK 他对此次设计以及周报有一份自己的理解,以下是他的想法,而我们聪明的读者会怎么解读这个 LOGO/Banner 呢,欢迎留言告诉我们~

@SketchK:在设计之初,问了一些身边的朋友,老司机在你心里是什么样子的?有的朋友说老司机是那种熟悉道路,开车老练的出租车司机,也有朋友说老司机应该是那种带大家搬砖致富的卡车司机,当然也有人说老司机就是那种饭桌上带大家开”车“的司机。但对于我而言,提到老司机或者老司机周报,我脑海里浮现的画面是:一个校车司机每天带着一波热爱 Swift 的人去探索当今最前沿,最有趣,最具挑战性的知识和技术。而我们这些每天阅读老司机周报的人就是这辆校车上的学生,充满了对未知领域的好奇与热情。大体是因为有了这个想法,才有了最后的这个 LOGO 设计稿。最后呢,希望老司机周报的读者能喜欢这个 LOGO,也希望大家能继续支持老司机周报这个组织,更希望 Swift 这门语言能够被更多的人所熟知和喜爱。

话题

读者 | @alexlee002 :

新项目可能会优先选择 swift, 但得看对公司原有技术栈的依赖程度。ABI 稳定是一个里程碑,如果 OC 和 swift 相互调用能做到 Java 和 Kotlin 那样就更好。

读者 | pc9527 :

终于稳定了!但根据 swift 社区的老传统,估计还得下一个版本才能放心, 当年(2.1)静态编译了一个第三方 http server 模块进来,某次手抖一点升级(2.2)全崩了,把自己的语法修完之后发现还得去改第三方的,提 issue 仨礼拜没动静之后都想自己帮人家改后 pr 了....

周报编辑 | @tom :

对于我们来说暂时没啥意见的,毕竟我们早就已经 all in swift 了。我们选型 Swift 还是从性能上面考虑的,相机应用对于代码速度和 crash 率有挺高的要求的。对于相机应用来说,性能提升几十毫秒也很牛逼了。这样子可以让相机帧率从 50 变成 53,用户体验棒棒哒。

如果你也有什么关于 Swift ABI 的看法,也可以在我们的 Github Issue 上评论,与周报编辑一起讨论。

说起协程,很多人可能还比较陌生,它是一个 60 年代就已经提出概念,是一种在非抢占式多任务场景下生成可以在特定位置挂起和恢复执行入口的程序组件。

目前在服务端中应用比较广泛,在高并发场景下使用极其合适,可以极大降低单机的线程数,提升单机的连接和处理能力,而在移动研发中,前端的 JavaScript,安卓的 kotlin 也都已经支持了协程,唯独对于 iOS 来说,Swift 的语言级协程支持还在路上,苹果官方也没有意愿给 objective-c 添加协程能力的意愿。

好在,上周阿里巴巴也开源的 coobjc 为我们 iOS 开发者解决了这个困惑, coobjc 同时给 objective-C 和 swift 都提供了协程功能。

所以这周想和大家一起探讨一下协程相关的问题。欢迎大家移步到 #2 本周话题 | 协程 和我们一起探讨。

新闻

Flutter 从去年开始,势不可挡,一路突飞猛进。Flutter 团队也一直不停的拓展着 Flutter 的应用范围,努力实现着 Flutter 更多的跨平台需求。

在 MWC 2019 上,Flutter 1.2 正式亮相,这次的最大的亮点是提供了新的 Web 开发工具。这个开发工具也会在之后加入到 VS Code 等其他开发工具中去。

CocoaPods-1.6.0

CocoaPods 1.6.0 有以下两大更新:

  1. 编译设置的生成部分被完全重写:在一个比较大的项目中,使用重写过的该版本执行 pod install 的时间比之前的版本降低了 77%。
  2. 1.6.0 开始会为每个测试 spec 生成一个单独的测试 target,而不是像之前把多个测试 spec 合并为一个测试 target。

另外,1.6.0 存在一个链接失效的 bug,已在后面的 1.6.1 版本解决,详情: CocoaPods/issues/8493

文章

阿里开源了 iOS 协程开发框架 coobjc

参与一些大前端开发,写了很多 js 的同学们,相信对 ES6 的新特性 async await 是非常的喜爱,能够允许你在同步的代码逻辑中,书写异步的代码。一般这种协程能力有的是语言层面直接支持,有的来自于框架。如今淘宝团队的大神们为 iOS 的 Objective-C 的语言也带来了协程框架。“当你还在写 UI Button 写界面的时候,别人已经在用汇编写 iOS 语法库了”,没错 coobjc 在 OC 的基础上通过汇编对寄存器的直接控制,来保存/中断/挂起/恢复一段逻辑的上下文,从而实现上下文的切换,再加上编译器与语法糖的扩展,实现了在 OC 中的 async await 等语法关键字的支持,更详尽的分析请看 “知识小集”的这篇源码分析

金三银四,又要跳槽时间点。该文章主要是整理了作者近段时间面试的一个心得体会,主要是讲述了面试前准备,简历书写,大厂面试经验,以及面试心态处理等几个方面。同学们如果有跳槽意愿,不妨回看过往 51 期的内推专栏,尝试询问对应公司是是否有内推。

如果你想 找工作 ,点这里:https://www.yuque.com/iosalliance/article/bhutav

如果你想 招人 ,点这里:https://www.yuque.com/iosalliance/article/ycyhf3

在图像处理任务上,GPU 一直以来都比 CPU 优异一个数量级。Metal 是苹果官方推出的 GPU 计算框架, 并提供了一套名为 Metal Performance Shader 的 API 接口,能够让开发者非常方便的使用 Metal 处理图像处理的任务。本文作者比较了使用 MPS 对比传统 CPU 的耗时,发现前者相比 CPU 耗时降低了 99.9%,之后介绍了 MPS 运行的基本原理并给出了一些 MPS 的编程技巧,做多媒体开发的同学不要错过。

在实际 App 中,视图通常只有几种样式,你可能会想各种办法做成视图组件。本文介绍了一种视图样式封装的方法,利用 Swift protocol extension 等特性组织代码,使得代码逻辑清晰易懂。

Swift 5 发布以后,ABI 变得更加稳定了,尽管依然与早期的版本是二进制不兼容的。其中对 Metadata 也有不少改动,对于有些项目,可能使用了强依赖 Metadata 的库,这就需要我们加以修改。本文作者就通过查看源码,回顾了 Metadata 的前世今生,可能会对读者很有借鉴意义。

CLion 是 JetBrains 全家桶中的一员,也是 Linux 上比较好用的 IDE 之一。本文以 Vapor 框架为例,完整介绍了在 Ubuntu 上搭建环境、调试和连接数据库,如果你也想试试 Ubuntu 上的开发体验,不妨一读。

本周 NSHisper 讨论的是 Swift 导入 Module 时可能发生的 API 污染,Swift 的静态方法查找是发生在编译时的,有时候可能会因为函数的声明不当,而导致意外情况的发生,例如我们本来想调用的是 a 函数,结果却调用了 b。

Matt 在文章里列举了几种 API 被污染的情况,最后还从调用方和声明方两个角度去探讨如何避免类似情况发生,值得一看。

本指南介绍了 App Store 产品页面每个基本信息的最佳实践,内容简明扼要,很有参考价值。相关阅读: App Store Product Page

本文作者对比了 UIWebView、WKWebView、flutter_webview_plugin(在 iOS 中使用的是 WKWebView)的加载速度、内存占用、HTML5 兼容性。

本文介绍了 APP 性能优化的五种技巧:

  1. 使用可复用的 tableViewCell
  2. 使用看起来像应用首页的启动页
  3. 视图控制器的状态恢复
  4. 尽可能减少透明视图的使用
  5. 在后台线程中处理繁重的功能

除了一些老生常谈的优化点之外, 视图控制器的状态恢复 这个点比例新颖,作者也着重讲解了其原理和使用方法。如果你的应用中尚未用到,不妨一试,应该可以明显提升内存经常吃紧的用户(:joy:)的使用体验。

微软出版的从 HTML / CSS / JS 到 TypeScript / React / Redux 的前端训练营,为期两天,第一天搭建环境、介绍 web 的基础知识:HTML,CSS 和 JavaScript,通过演示代码了解一些核心概念。第二天演示和练习结合在一起,深入更高级的主题,如 TypeScript、测试和状态管理。(TypeScript 是由微软开源的编程语言。它是 JavaScript 的一个严格超集,并添加了可选的静态类型和基于类的面向对象编程,设计目标是开发大型应用,然后转译成 JavaScript)。

工具

periphery

periphery 是一个用 Swift 语言编写的,专门用于扫描 Swift 工程无用代码的工具。它的工作原理是利用了 Swift 语法树的各种回调特性,并且因为是 Swift 语言编写的关系,所以它也只能用于 Swift 工程。从本质上来说,它跟 OC 时代的各种 Clang Checker 做的事情是没有多大区别的,不过从代码的维护性上来说就比 C++ 版本的 checker 要好很多。实测下来,跑一次全规则扫描的时间确实挺长的,如果只是扫描无用的函数参数的话倒是非常的快,大概 10 来秒就出结果了。这个工具也提供了 CI 的集成方案,总体而言算是一个比较成熟的工具了,值得推荐。

代码

:star2: chameleon

chameleon 是来自滴滴出行的一套前端跨端整体解决方案。其最大特点是目标让一套代码,同时解决微信小程序,支付宝小程序,百度小程序,快应用,CML-SDK 终端等以 MVVM 为标准的终端。

目前国内前端大环境下,开发者需要为同样的功能在各自为阵的小程序,快应用上多次重复实现。这样做既耗时,也耗费大量的人力,最后的效果也不一定理想,所以这样一套统一多端的方案来避免多次重复开发,也不失为一个好选择。

吐槽一下,chameleon 这个名字已经被很多库用了,算是个非常常见的项目名字,如果能有个更独特一点的名字,可能会更好一点。

freeCodeCamp

开源代码库和课程大纲,和数百万人一起免费学习编程。freeCodeCamp 由一个小型非盈利组织运营,目标是帮助数百万繁忙的成年人向科技行业转型,这个社区已经帮助超过 10000 人找到他们的第一份 程序员 工作。其中全栈 web 开发课程是完全免费的,可以按照自己的节奏来学习,有上千个互动性的编程挑战来帮助你学习。

内推

  • 北京-百度网盘 持续招 iOS 开发 :社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信@小非86 聊聊~

  • 北京-蚂蚁金服 招iOS/安卓/前端开发 :负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信@折腾范儿_味精 了解情况。

  • 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博@JasonYuh。

  • 杭州奇志科技招聘 iOS、前端 :奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信@没故事的卓同学 了解。

  • 深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目 :如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~

  • 北京字节跳动多闪 iOS 团队持续招人中 :简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我(@AidenRao)的微信 jingmu1994 了解更多公司及岗位信息。

  • 北京百度教育事业部招 iOS 开发 :百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。

  • 深圳 - 格隆汇 iOS / Android / 前端 :公司方向是投研资讯,目前正在稳步扩张中,各个级别的工程师都有需求。任何推荐或者简历都可以发送到我邮箱:chenkem@gmail.com,同时也欢迎大家私信我了解更多信息。

关注我们

我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。

老司机 iOS 周报 #57 | 2019-03-04

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Developing Large Web Applications

Developing Large Web Applications

Kyle Loudon / Yahoo Press / 2010-3-15 / USD 34.99

As web applications grow, so do the challenges. These applications need to live up to demanding performance requirements, and be reliable around the clock every day of the year. And they need to withs......一起来看看 《Developing Large Web Applications》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具