我们希望喜欢iOS和Texture的任何人对本指南有所帮助! 1.制作UI组件 对条件 UI组件使用惰性属性 。 否则,即使根本不使用给定的UI组件,您最终也会进行不必要的分配和计算 不要使用节点生成功能 ! 我们建议使用automaticManagesSubnodes而不是addSubnode 。 将所有UI组件属性置于Const结构中。 2. LayoutSpec // MARK:和// MARK: – #pragma mark -在Objective-C中与#pragma mark和#pragma mark -等效。 推荐使用扩展,用于layoutSpec 代码的凝聚力 和可读性。 请勿将所有代码都放在layoutSpecThatFits:上以便阅读 有意义的layoutSpec分隔。 (文章) 方法名称必须以“ LayoutSpec”结尾。 本地layoutSpec变量名称必须以“ Layout”结尾。 覆盖func layoutSpecThatFits(:)-> ASLayoutSpec { 让~~~~ layout = ~~~~ layoutSpec(:) } FlexBox属性应在layoutSpecThatFits处定义: 建议创建弹性样式的糖代码,如下面的屏幕快照所示。 3.任何与主线程视图相关的属性访问都必须在didLoad方法中处理。 4.反应式编程(* RxSwift) RxSwift社区/ Rx可可纹理 RxCocoa纹理扩展库。 通过创建一个 github.com 来为RxSwiftCommunity / […]
Swift在Airbnb的简史 在2014年的WWDC上,Apple用一种新的语言:Swift使我们感到惊讶。 在Airbnb,我们很快跃居第一,并在2014年8月甚至在Swift达到1.0之前就编写了第一行Swift。 那年晚些时候,苹果发布了Apple Watch和WatchKit。 考虑到社区对传闻已久的Apple Watch的兴奋,我们在2015年4月打赌,开始完全在Swift 1.1中编写Airbnb的Apple Watch应用程序的第一个版本。 在WWDC 2015上,Apple正式宣布了Swift 2.0。 因此,当需要构建Apple TV应用程序时,我们尝试了一下并使用Swift 2.0进行了编写。 在这两个成功的试验之后,我们于2016年1月决定要在Swift 2.0中编写所有新功能。 一切进展顺利,直到“大雨燕”改名降落。 为了升级到Swift 3,我们要求一个由两个人组成的团队在5周的时间内进行代码库的迁移。 幸运的是,升级到Swift 4更加简单。 自2017年10月以来,我们的整个代码库都位于Swift 4中。 为什么要使用风格指南? 斯威夫特是一门年轻的语言。 当我们在2014年开始使用它时,我们还没有标准化的Swift样式指南。 我们让15位工程师在我们的代码库中放松下来,他们每个人都以自己的个人Swift风格编写。 很快变得很清楚,如果我们不同意标准化的风格,我们要么花太多时间讨论PR中的风格,要么我们的代码库就像杰克逊·波洛克的画。 当我们在使用Apple TV应用程序时,我们开始了一份非正式的风格指南。 在2016年1月,这与其他临时工作相结合,成为了正式的Airbnb Swift样式指南,我们开始合作定义在Airbnb上编写Swift的首选方式。 苹果和Swift社区为如何编写Swift提供了宝贵的指导。 即使他们绝对影响了我们在Airbnb上编写Swift的方式,我们仍然认为保留自己的样式指南是一种有价值的方法,可以迭代对我们认为正确的事情,同时与社区保持一致。 这就是为什么我们将Apple的建议添加到我们的指导原则中的原因。 我们不想手动识别和更正违反样式指南的行为,因此我们分别采用了Swift社区中最受欢迎的linter和formatter,分别为SwiftLint和SwiftFormat。 在我们的样式指南中,您将找到我们的SwiftLint和SwiftFormat配置。 如果您想使用与我们相同的规则,只需抓住它们并开始在您的项目中使用它! 我们为什么要公开采购? 自从我们开始编写Swift以来,已经过去了很多年,并且社区已经在某些模式上实现了标准化。 Swift语言和社区对我们来说很棒,因此我们想通过分享一些我们在Airbnb上编写Swift所用的模式来做出贡献。 我们了解并非所有人都会同意我们在Airbnb的工作方式。 我们相信有异议的人,我们很想听听您的反馈-我们很高兴分享我们的想法。 如果您不同意或认为我们缺少什么,欢迎您的贡献! 拥抱斯威夫特 在Airbnb,我们将Swift视为iOS开发的未来,并且我们将继续推动尖端本机技术的发展。 鉴于我们即将淘汰React Native,我们将在内部Swift和Kotlin库中投入更多资源。 我们70%的新本地Android代码是用Kotlin编写的,而90%的iOS是用Swift编写的。*我们一直在迁移到最新的语言功能。 *不包括旧版React Native代码。