forked from SwiftOldDriver/iOS-Weekly
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
joseph.jiafu.zhang
committed
Mar 27, 2018
1 parent
40a2be8
commit e1258b3
Showing
1 changed file
with
127 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
# 老司机 iOS 周报 #11 | 2018-03-19 | ||
|
||
![ios-weekly](../assets/ios-weekly.png) | ||
|
||
老司机 iOS 周报第十期在 GitHub 上的 Star 数超过了 1000,得到大家的认可也坚定了我们把周报继续做下去的决心。 | ||
|
||
欢迎江湖人称吴彦祖的 [@叶孤城](https://weibo.com/u/1438670852) 加入我们的编辑团队。 | ||
|
||
这期开始我们在每篇文章的开头会用一个动物表示预计阅读时长: | ||
|
||
- 🐎 很快就能读完(1 - 10 mins) | ||
- 🐕 中等(10 - 20 mins) | ||
- 🐢 慢(20+ mins) | ||
|
||
## 新闻 | ||
|
||
### [WWDC 2018 时间确定](https://developer.apple.com/wwdc/) | ||
|
||
Apple 宣布 WWDC 2018 将于 6 月 4 日至 8 日在圣何塞举行,现已开放注册(注册截至时间是 3 月 22 日),届时将以抽签方式确定资格。 | ||
|
||
另外,Apple 还有 Scholarships 计划为优秀在校学生提供免费门票,这有一篇 WWDC 2017 Scholarships 获得者写的 [WWDC18 奖学金指北](https://apollozhu.github.io/2018/03/16/wwdc18-scholarships-info-cn/)。 | ||
|
||
## 文章 | ||
|
||
### 🐎 [iOS Weekly 的作者整理了一份他的 iOS 博客订阅](https://iosdevdirectory.com/) | ||
|
||
最近 iOS Weekly 的作者整理了一份他的 iOS 博客订阅,小编全部导入了之后,在列表里看到了最新很活跃的 Swift by Sundell,老牌大佬 Ole Begemann...,感兴趣的同学可以直接下载 OPML 文件然后直接导入到 RSS 阅读器里。 | ||
|
||
### 🐕 [Solving a Mysterious Heap Corruption Crash](https://topologyeyewear.github.io/engineering-blog/2018/03/07/heap_corruption/) | ||
|
||
这是一个悲剧的故事,该作者业务中遇到了一个诡异的内存问题引起的 crash,百般追查,历尽千辛万苦,怀疑过是复杂 AR 业务代码所致,也怀疑过是 C/C++ low level 代码内存控制不当所致。然后开始疯狂的一步步移除业务中所有的三方库,依然 Crash,移除了重业务代码,依然 Crash,最后终于确定是 Xcode 的 bug,提交 bug 后被 Xcode 新版本修复,虽然是一个悲剧的故事,但整个过程从发现 bug 到解决 bug 再到细挖为什么的过程,值得借鉴。 | ||
|
||
### 🐢🌟 [AppDelegate 瘦身指南](http://kyson.cn/index.php/archives/105/) | ||
|
||
什么代码都往 AppDelegate 里放是业内常见的问题。作者整理了 AppDelegate 的代码解耦方式: | ||
|
||
- FRDModuleManager:模块管理者统一管理子模块; | ||
- JSDecoupledAppDelegate:自定义 AppDelegate 类,将 App 生命周期拆分成几个不同的代理进行解耦,而不是像原生的 AppDelegate 所有代理都在同一个类里; | ||
- AppDelegate 分类( Category ):这个方案比较常见了,就是按照职能把代码分到不同的 Category 文件中; | ||
- JLRoutes、MGJRouter:也是模块化后模块管理者管理的策略,只是结合了路由系统注册方式和第一种略有不同; | ||
- Objection:利用轻量级的依赖注入框架解决。不过这个方式不太主流,而且并没有真正解决 AppDelegate 设计上的问题。 | ||
|
||
### 🐕 [Getting Started with Flutter](https://www.raywenderlich.com/188257/getting-started-with-flutter) | ||
|
||
这是很标准的一篇 `Getting Started With XX` ,分别从简单介绍,配置环境,helloworld,热重载调试,组件复用,网络请求,Table 界面,图片与网络,使用主题,这几个方面一一带你体验了一把 Flutter,Talk is cheap,代码操练起来,亲自感受一下。 | ||
|
||
编辑觉得这是又一个巨型轮子,看看学学用用,业务中是否下决心大规模使用需要筒子们做好对比和衡量吧。 | ||
|
||
### 🐕 [iOS 微信特殊字符保护方案](https://mp.weixin.qq.com/s/3xmpJqn361HGtUloOVsIZg) | ||
|
||
相信大家对之前 iOS 设备碰到特殊字符导致崩溃的问题记忆犹新,后来微信团队对特殊字符做了保护。 | ||
|
||
> 由于无法事先知道字符串里包含特殊字符,所以只能先让它排版/绘制,看看是否出现问题。做法是,在排版/绘制字符串前,先设置标记位,排版/绘制结束后,移除标记位;一旦发现标记位存在,就意味着这字符串可能有问题,下次就不显示这个字符串。 | ||
|
||
### 🐎 [机器学习与移动端会碰出怎样的火花?](https://www.zhihu.com/question/65957269) | ||
|
||
自从 [CoreML](https://developer.apple.com/documentation/coreml) 随着 iOS11 发布之后,机器学习在移动端的应用就越来越被重视。知乎上也对其进行了热议,其中 『[网友微调](https://www.zhihu.com/people/breaknever/activities)』围绕着『**移动设备适合做机器学习的原因**』、『**移动端机器学习的具体应用**』和 『**机器学习在移动端的特点**』三方面和大家分享了自己的看法,很有见地。 | ||
|
||
### 🐕 [给 NSBundle 添加一个 current 方法](http://bou.io/NSBundle.current.html) | ||
|
||
[NSBundle](https://developer.apple.com/documentation/foundation/bundle) 是我们开发中的常见类,但苹果并没有提供直接通过 `[NSBundle current]` 方便地获得当前的 bundle 的 API。于是该文作者与其朋友开了个脑洞,通过 `backtrace()` 来获取调用者的函数指针,进而再使用 `dladdr()` 来得到该函数所在的库路径,最后通过这个路径去 `allBundles` 和 `allFrameworks` 中匹配,来实现了 `[NSBundle current]` 方法。 | ||
|
||
### 🐕 [不同角度看问题 - 从 Codable 到 Swift 元编程](https://onevcat.com/2018/03/swift-meta/) | ||
|
||
喵神新文,围绕“将一个类型转换为字典”这个问题,向读者介绍了三种解决思路和实现细节:Codable、Mirror 以及代码生成。而更为重要的点在于喵神想传递的思想:如何利用“元编程”的思维来解决项目中碰到的重复体力劳动问题。(PS:喵神最近开通了[小专栏](https://xiaozhuanlan.com/onevcat),非常值得关注!) | ||
|
||
### 🐎 [快速用上 Swift 静态库](https://blog.dianqk.org/2018/03/08/use-static-framework/) | ||
|
||
文章记录了作者在 Swift 静态库上使用的一些实践。作者使用了一个比较 trick 的技巧,通过在 Podfile 中添加自定义脚本的方式,快速为每个第三方库添加 static_framework 支持。不过因为是实践类型的,如果要引入到自己的项目中,可能还会有一些坑需要自己处理。 | ||
|
||
### 🐢 [Using Swift Server API 0.1.0](http://www.alwaysrightinstitute.com/microexpress-nio/) | ||
|
||
这是一个 Swift Http API 的使用介绍,总共有三篇文章,对于 Swift 服务端开发感兴趣的朋友可以看一看: | ||
|
||
1. **[Raw API](http://www.alwaysrightinstitute.com/http-010/)**:Swift Http 原始 API 的使用介绍 | ||
2. **[µExpress](http://www.alwaysrightinstitute.com/microexpress/)**:用了 350 行代码,在原始 API 的基础上构建了一个类似于 Express.js 的网络框架 | ||
3. **[Swift Nio](http://www.alwaysrightinstitute.com/microexpress-nio/)**:使用最新的 Swift-Nio 处理网络请求 | ||
|
||
### 🐎 🚧 [Best iOS Development Tips and Tricks](https://medium.com/developerinsider/best-ios-development-tips-and-tricks-6c42c1d208c1) | ||
|
||
本文介绍了 Xcode 使用中的一些实用技巧,五分钟的阅读即可让我们掌握一些大幅提升工作效率的 Xcode 配置方法,值得一看(文中视频源为 YouTube,请注意科学上网)。 | ||
|
||
### 🐕 [苹果 ResearchKit 中的图表控件](http://researchkit.org/docs/docs/ChartsAndGraphs/ChartsAndGraphs.html) | ||
|
||
ResearchKit中提供了五种默认的图表UI控件,包含常见的饼图(pie chart), 单线图(line chart),多线图(multi lines graph), 和散点图(discreate graph), 多散点图(mutl discrate graph)。使用方法也很简单,和 tableView 很相似,只需要设置好每种图表的 DataSource 即可。但是,关于饼图线框图之类的的第三方框架实在太多。我对这些控件的使用频次存疑。 | ||
|
||
## 设计 | ||
|
||
### 🐢 [Great UI Animations tips](https://uxdesign.cc/good-to-great-ui-animation-tips-7850805c12e5) | ||
|
||
主要分析了几种常见 Transition animation 的设计方法。可以了解很多 Transition 的设计思路和意图。比如不同 state 需要展示同一种内容的情况下应该如何设计转场等。配合大量 gif 的解释说明,非常值得一看。 | ||
|
||
|
||
### 🐕 🚧 [Designing a better notification experience for iOS](https://uxdesign.cc/designing-a-better-notification-experience-for-ios-def1df8e89e8) | ||
|
||
从设计角度分析 Apple 应该如何优化 iOS 目前的通知系统,通过“分组”和“暂时静音”两种方式来过滤噪音,让用户快速、轻松地理解信息。 | ||
|
||
|
||
## 工具 | ||
|
||
### [Sophie](https://marcosantadev.com/portfolio/macos-app-sophie/) | ||
|
||
Sophie 是一款 Carthage 图形化界面管理工具,目前功能还比较简陋,但是基本的管理功能都已经有了。对于图形界面爱好者是一款非常不错的工具软件。 | ||
|
||
## 代码 | ||
|
||
### [Open-Source iOS Apps](https://github.com/dkhamsing/open-source-ios-apps) | ||
|
||
开源的 `iOS`、`watchOS` 和 `tvOS` App 列表,目前收集了超过 700 个项目,GitHub Stars 超过 16000 次,值得参考。 | ||
|
||
### [ZIKCellularAuthorization](https://github.com/Zuikyo/ZIKCellularAuthorization) | ||
|
||
iOS 10 上国行设备首次安装 App 在获取网络权限时会有不弹授权 Alert 的 bug,这一系统 bug 让众多开发者无可奈何。这个开源作者通过一系列的排查调研,最后使用私有 API 来解决了这一难题,整个解决方案和思路都很值得学习。 | ||
|
||
另外由于目前 iOS 11 的覆盖率已经接近 70%,且该问题仅在 iOS 10-10.3.1 中出现,编辑建议要慎重考虑是否将该方案运用到线上应用。 | ||
|
||
## 本期编辑 | ||
|
||
[@没故事的卓同学](https://weibo.com/1926303682/profile),[@四娘](https://kemchenj.github.io),[@mmoaay](https://weibo.com/u/1302422271),[@享耳先森](https://github.com/iblacksun),[@EyreFree](https://weibo.com/eyrefree777),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang), [@叶孤城](https://weibo.com/u/1438670852) | ||
|
||
## 说明 | ||
|
||
🚧 表示需翻墙,🌟 表示编辑推荐 | ||
|
||
预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins) | ||
|
||
|