当前位置: 首页 > news >正文

老司机 iOS 周报 #30 | 2018-08-06

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

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

新闻

新变化不多,但最新的 iOS 12 「剧透」了今年可能发布的新硬件 | 具透

在 iOS 12 的第四个公开测试版中,苹果可透露了不少新硬件的信息:比如支持双卡双待的 iPhone;支持 Face ID 的 iPad;支持无线充电的 AirPods 充电盒;以及 HomePod 将支持打电话。其他软件方面的改动也不少,具体还是仔细看看原文。当然,如果你问我自己能否瞧瞧固件里的秘密,IDA 和 Hopper 了解一下。

文章

? Swift 4 弱引用实现

原文作者 Mike Ash,是知名博客 Friday Q&A 作者,现在是 Swift 团队一员。

2015 年的时候 Mike Ash 就已经介绍过 Swift 弱引用的实现了,这次 Swift 4.0 的对象内存布局做了一些调整,加入了 side table 去存放额外的对象信息,改变了弱引用的实现。文章还对 Objective-C 和 Swift 4 之前的旧实现做了对比分析。

? 如何在几十个 Repo 中游刃有余

本文对“研发效率”这个话题进行了非常深入的讨论,平时我们为了提升研发效率,会开发一些脚手架,工程模板等,但大多数时候都不会有量化指标去衡量,秉承“不谈目标的优化都是耍流氓”的原则,作者提出了一系列衡量项目迭代和发布时间的指标,来帮助衡量优化的目标。除此之外,还探讨了在复杂系统开发中保持高效开发的经验,很有价值。专注研发效能、工程架构的同学可以重点参考。

另外,作者陈天也是我很喜欢的程序员,经常会发表一些质量很高的技术文章,推荐大家关注他的公众号。

? MessageThrottle Safety

MessageThrottle 是作者玉令天下开发的 Objective-C 节流限频组件,其原理基于 Hook 消息转发流程,在运行时应用了一套节流限频的规则。本文介绍了新版本中对于 hook 流程、多线程操作、规则管理的安全性实现细节。 本文是关于 MessageThrottle 的第四篇文章。前三篇如下:

  • Objective-C Message Throttle and Debounce
  • Associated Object 与 Dealloc
  • MessageThrottle Performance Benchmark and Optimization

? Structuring Swift code

随着时间的流逝,几乎所有的 app 和框架都会变得更大、更复杂,所以维持一个稳定的、一致的架构就变得非常关键。这篇文章介绍了提升 Swift 项目架构的几个小技巧,包括"三个原则"(如果有三个相同类型的类、文件夹或文件,就将它们组合起来)、根据功能来组织架构的原则以及"侦查原则"(在改动代码库的时候时刻让文件处于更容易找到的位置)。

? Flutter 的编译模式

Flutter 在 Google I/O 之后也算是火了一把,虽然之后能不能继续火下去也还是个未知,但是能多学习了解新东西总是有益无害。

蚂蚁金服的 stephenwzl 在自己的微信公众号写了一系列关于 Flutter 基础知识的文章,对于还在学习 Flutter 的人来说,比较有学习价值。

本文介绍了 Flutter 编译中的一些基本概念,阐释了基本的编译过程和不同平台上的区别。除了这篇文章,还可以参考学习一下他的其他文章。

? Migrating an Objective-C class to Swift: a piecemeal approach

随着 Swift 越来越普及,很多人都会面临如何将 Swift 与已有的 OC 代码相结合的问题。对于一个已有的 OC 类,如果我们无法马上把它完全用 Swift 来重写,但是又想用 Swift 为它扩展功能,特别是添加不兼容于 OC 的存储属性(如带泛型的枚举类型),我们是无法把这个属性直接加到 OC 类定义里的。作者巧妙地做了一层简单的封装,轻松绕过了这个限制,相信对大家处理类似问题会有启发。

? Never

Never 是 Swift 标准库中一个很特别的类型。在 SE-0102 中提出用 Never 去代替 @noreturn。在文中 Mattt 先介绍了 Never 这个特殊的类型是什么,紧接着以 Result<Value, Error: Swift.Error> 为例介绍了一个 Never 用于解决不可能发生的场景的实际应用的妙处。最后在文章的末尾,Mattt 还写了一些对未来的 Swift 中 Never 可以以一个 Bottom Type 的角色去实现更多的功能的期待。

? JSON Web Token 入门教程

JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文主要是介绍它的原理和用法。

对于用户认证来说,用户的 session 数据如果存在服务端,那对于服务器集群,或者是跨域的服务导向架构。session 数据的共享,会是一个比较麻烦的问题。 JWT 方案则是将不可篡改的 session 数据储存到客户端,每次请求再将 session 数据发回给服务端进行用户认证。不同服务器之间,不再需要进行 session 数据共享,比较容易实现扩展。

? Scrollable UIStackView

对 UIScrollView 进行自动布局(Auto Layout)时需要设置两套约束,分别是 frame 和 content。设置 frame 很简单,跟普通的 view 操作一样;但是 content 就比较特殊了,自动布局引擎会通过子视图的大小自动调整 content,所以加到 UIScrollView 里的视图必须是已经指定大小或者能自动计算大小(intrinsic content size)的。

本文主要解释了把 UIStackView 加到 UIScrollView 进行自动布局时出现的一些棘手的问题,并实现了一个可滚动的高度自适应的 StackView。相信大家看完后,对如何使用自动布局处理滚动视图会有一个比较清晰的认识。

代码

PerfectAccelerators - 加速 Perfect Server Side Swift 开发

上期我们推荐了篇文章介绍 Perfect 开发体验,这次,给大家推荐一组 Perfect 封装库,可以帮助 Perfect 加速 Server Side Swift 开发。

音视频

ADDC 2018

ADDC 是 2018 年 7 月 4 日至 6 日在西班牙巴塞罗那举办的 App 设计师和开发者大会,这个大会的目的是给设计师和开发者提供一个开放的、包容的、合作的空间,让他们在一起碰撞想法,找到新的合作方式。ADDC 请到的嘉宾都是移动 app 领域的顶级开发者和设计师,这个 YouTube 频道收录了他们精彩的、具有启发性的演讲。

内推

北京-拉勾网招聘 iOS 工程师

拉勾团队目前需要一枚 iOS 大牛,负责公司核心产品功能的开发和维护。

北京-蚂蚁金服 招iOS/安卓/前端开发

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

编辑内推

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

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

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

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

关注我们

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

同时也支持了 RSS 订阅:github.com/SwiftOldDri… 。

本期编辑

@没故事的卓同学,@四娘,@享耳先森,@Damonwong,@折腾范儿_味精,@张嘉夫,@AidenRao,@Parsifal,@aaaron7,@方秋枋,tom510230,anotheren,水水,looping,@JasonYuh,@老老老老老老老驴

说明

? 表示需翻墙,? 表示编辑推荐

预计阅读时间:? 很快就能读完(1 - 10 mins);? 中等 (10 - 20 mins);? 慢(20+ mins)

相关文章:

  • 机器学习 -- 机器学习是什么?
  • TCP三次握手四次挥手手动实践
  • 初识 Spring(05)---(Annotation注解)
  • win7系统已经够用为什么还要开发win10系统
  • python3 简单爬虫
  • HAP将新的页面加入到菜单
  • 常用的CSS各类属性
  • 从计算机知识到落地能力,你欠缺了什么?
  • 阿里云王牌架构师杨曦:N多环境N多应用个性配置管理如何从混乱到简单?
  • 小程序开发中的那些坑
  • Intellij idea 快捷键持续更新
  • 常用加密算法概述
  • CSS基础2-盒子模型、定位、浮动
  • 集群架构(1)
  • python全栈开发 * background 定位 z-index * 180813
  • Angular Elements 及其运作原理
  • CSS 专业技巧
  • Fastjson的基本使用方法大全
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Java|序列化异常StreamCorruptedException的解决方法
  • Js基础——数据类型之Null和Undefined
  • Netty 4.1 源代码学习:线程模型
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 深度解析利用ES6进行Promise封装总结
  • 积累各种好的链接
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • %check_box% in rails :coditions={:has_many , :through}
  • (2)STM32单片机上位机
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (九)信息融合方式简介
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (十一)手动添加用户和文件的特殊权限
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • .md即markdown文件的基本常用编写语法
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .NET应用架构设计:原则、模式与实践 目录预览
  • /etc/shadow字段详解
  • :“Failed to access IIS metabase”解决方法
  • @AutoConfigurationPackage的使用
  • @Controller和@RestController的区别?
  • @Resource和@Autowired的区别
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • @我的前任是个极品 微博分析
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法
  • [C++]C++入门--引用
  • [C++进阶篇]STL中vector的使用
  • [C++提高编程](三):STL初识