老司机 iOS 周报 #1 | 2018-01-01

tech2022-08-31  115

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

有建议或者有信息推荐可以到我们 https://github.com/SwiftOldDriver/iOS-Weekly 下面提 issue。

新闻

致广大用户关于 iPhone 电池及性能的说明[1]

苹果对电池老化会导致 iPhone 性能下降做的沟通说明。表示 从来没有、也永远不会通过任何手段,来有意缩短任何 Apple 产品的使用寿命,更不会降低用户体验来迫使大家升级设备。为了安抚大家的不满,苹果将更换电池的费用下调了 390 元,从 608 元降到 218 元。不过这个降价不是永久性的,只持续到 18 年 12 月。

Swift 快要可以和 Python 无缝交互了[2]

这是 Chris Lattner 大神到 Google 之后的第一个提案,让 Swift 可以和 Python 无缝交互,Chris 每次提案基本上都会带上 Demo,这一次也不例外,只用了不到一千行代码就把交互逻辑给实现了出来????‍♂️,大家可以直接下载这个 playground[3] 试一下用 Swift 写 Python 是什么感觉。

另外 Chris 还提出使用一套 DynamicMemberProtocol 去优化了 Python 交互的语法, 与 Python 的交互都是依赖于字符串,画风大概是这样的 let a = np.call(member: "arange", args: 15).call(member: "reshape", args: 3, 5),如果实现了 DynamicMemberProtocol 的话,就可以在 Swift 里像 Python 代码一样调用 Python 的方法 np.arange(15).reshape(3, 5),编译器不会给遵循了这个协议的对象做静态检查,但这本质上只是一个语法糖,编译时还是会转化为前者的格式去调用。

苹果宣布收购 Buddybuild

Buddybuild 是著名的自动化 CI 托管服务平台,苹果收购后 Buddybuild 公司将会加入 Xcode 团队。期待 Xcode 对 CI 的支持将会更进一步。

Swift Weekly Brief 宣布停更[4]

Jesse Squires 宣布停止更新 Swift Weekly,一直以来这个 News Letter 都是我了解 Swift 开发进度最主要的途径,现在要停更了,确实很可惜。

Jesse 提到停止更新的理由,主要是因为当初开始 Swift Weekly 的时候,Swift 刚刚开源,对于功能和设计的讨论非常非常多,并且 Mailing List 这种形式让人很难找到有价值的内容,所以这样一个 News Letter 在当时是非常有意义的。但现在 Swift 已经逐渐成熟,社区里的讨论变得越来越深入,而且 Swift 最近还从 Mailing List 迁移到了论坛[5]上,相关资讯的获取已经变得越来越方便了,Swift Weekly 的存在价值也已经大不如前了,所以才打算停止更新。

但停更只是个人意义上的停更,Jesse 欢迎社区的人接手过去继续更新,并且在原文介绍了一系列接手的注意事项。

Apple 更新 App Store Review Guidelines,增加 VPN 和 loot boxes 等条款[6]

Apple 于 2017.12.21 更新了其 App Store Review Guidelines. 主要变化集中在以下几个方面:

新上架 App 引入 pre-order 机制

虚拟物品抽奖必须公布各项概率(loot boxes)

VPN 类应用如需在特定地区发布,必须提供相应许可信息

符合特定前提下,允许通过模板生成的 App 上架发布

LiberiOS jailbreak for iOS 11 officially released, includes support for the iPhone X[7]

LiberiOS 正式发布 iOS 11.0 - 11.1.2 的越狱工具,包括对 iPhone X 的支持。

文章

iOS 知识小集[8]

国内知名开发者 @南峰子 把过去微博上发出来的 iOS 开发知识整理了出来,发在了 GitHub 上,据介绍这一系列的微博已经有 1000w 的阅读量了!!!

Swift Tips[9]

跟前面 iOS Tips 小集类似的项目,不同的是这个项目里讲的是一些 Swift 的小 Tips,里面 #7,#22 等技巧我都有实际用于项目中,推荐大家看一下。

Weak Arrays[10]

objc.io 在这篇博客里简单介绍了在 Swift 中自定义弱引用数组的一种实现方式。

When and how to use Value and Reference Types in Swift[11]

全面介绍了 Swift 中的值类型和引用类型的使用区别。

Building an enum based analytics system in swift[12]

使用 enum 和 protocol 构建安全、高效、灵活的 Swift 事件统计系统。

Measuring Swift compile times in Xcode 9[13]

对 Xcode 进行一些配置看看哪些 Swift 代码拖慢了你的编译速度。

工具

App Host[14]

一个轻量级的包托管网站,app-host 主要用于 iOS 和 Android 的包管理,作用类似于fir.im,不同之处是可以自由部署在内网,方便了公司项目保密。并且代码开源也可以方便根据各自需求进行定制化开发。

XcodeGen[15]

XcodeGen 是一个根据已有的代码文件 / 目录和简单的配置文件来生成 Xcode project 的开源工具,快速生成模板工程、将 .xcodeproj 从 Git 追踪中忽略、方便地和他人分享自己的工程配置等,无限可能,等你尝试。

代码

WCDB Swift

WCDB 是微信团队开源的 SQLite 数据库,近日放出 WCDB Swift 的 1.0 正式版,WCDB Swift 使用纯 Swift 编写,几乎不包含 Cocoa 的代码,且与 ObjC 版保持完全一致的功能。其基于 Swift 4.0 的 Codable 协议实现模型绑定,通过建立 Swift 类型与数据库表之间的映射关系,使得开发者可以通过类对象直接操作数据库。

虽然项目没有实际使用于微信中,但这只是第一步嘛,并且文章最后还表示测试用例的代码覆盖率已经达到了 91.34% 了????,所以大家真的可以考虑在项目中使用。

Task automation in Swift with Sake[16]

iOS 还没有使用 Swift 语言编写的自动化工具,目前流行的都是采用 bash、ruby 编写的。于是作者尝试利用 Swift 写了 Sake。这个项目目前还处于早期。

Fluid Slider[17]

Ramotion 出品的滑动控件。

微信跳一跳可以直接更改分数,POST 请求没有校验[18]

v2ex 上也有获得微信小游戏跳一跳源码[19]的讨论。

Swift 进阶[20]

Swift 经典书籍《Swift 进阶》更新了 Swift 4 的相关内容。

本期编辑

@没故事的卓同学,@四娘,@mmoaay,@享耳先森,@EyreFree

参考资料

[1]

致广大用户关于 iPhone 电池及性能的说明: https://www.apple.com/cn/iphone-battery-and-performance/

[2]

Swift 快要可以和 Python 无缝交互了: https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20171204/042029.html

[3]

playground: https://lists.swift.org/pipermail/swift-evolution/attachments/20171206/9103f31e/attachment.zip

[4]

Swift Weekly Brief 宣布停更: https://www.jessesquires.com/blog/swift-weekly-brief-hiatus/

[5]

论坛: https://forums.swift.org

[6]

Apple 更新 App Store Review Guidelines,增加 VPN 和 loot boxes 等条款: http://www.appstorereviewguidelineshistory.com/

[7]

LiberiOS jailbreak for iOS 11 officially released, includes support for the iPhone X: https://www.modmy.com/liberty-jailbreak-ios-11-released-includes-cydia-and-support-iphone-x

[8]

iOS 知识小集: https://github.com/southpeak/iOS-tech-set

[9]

Swift Tips: https://github.com/johnsundell/swifttips#53-string-based-enums-in-string-interpolation

[10]

Weak Arrays: https://www.objc.io/blog/2017/12/28/weak-arrays/

[11]

When and how to use Value and Reference Types in Swift: https://khawerkhaliq.com/blog/swift-value-types-reference-types/

[12]

Building an enum based analytics system in swift: https://www.swiftbysundell.com/posts/building-an-enum-based-analytics-system-in-swift

[13]

Measuring Swift compile times in Xcode 9: https://www.jessesquires.com/blog/measuring-compile-times-xcode9/

[14]

App Host: https://github.com/pluosi/app-host

[15]

XcodeGen: https://github.com/yonaskolb/XcodeGen

[16]

Task automation in Swift with Sake: http://ppinera.es/2017/12/15/sake.html

[17]

Fluid Slider: https://github.com/Ramotion/fluid-slider

[18]

微信跳一跳可以直接更改分数,POST 请求没有校验: https://gist.github.com/feix/6dd1f62a54c5efa10f1e1c24f8efc417

[19]

获得微信小游戏跳一跳源码: https://www.v2ex.com/t/419352

[20]

Swift 进阶: https://objccn.io/products/advanced-swift/

内推

老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。

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

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

当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。

关注我们

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

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

另外,老司机技术周报周边商店 正式上线,欢迎大家前往订购~

最新回复(0)