首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我在Uber亲历最严重工程灾难

于是,这个由设计、产品和架构组成核心团队在一个房间里工作了几个月,使用函数式和反应式模式、编程语言开发应用程序,一切都进行得很顺利。 这个架构高度依赖了 Swift 高级语言特性。...他们在很短时间内与少数工程师一起创造了令人惊叹体验,核心产品大部分功能都已经完成。 于是,在全公司范围内推广开始了。各个团队开始更多功能引入到 App 。...由于 Swift 在编译时将对象命名空间转换为符号名称,这意味着他可以安全地保留命名空间。于是我们可以静态链接,并将之前时间从 10 秒减少到 0。 下一个是 App 大小问题。...当时,我们计划 App 包含在 App 包,并一步一步“安全”地发布出去。为节省空间,我们做第一件事就是移除 App。我们这种策略称为“Yolo”,由当时 CEO 做决定。...Swift 团队也承认,Swift 编译器不可能像 Objective-C 编译器那样文件编译到很小。

63320

从 iPhone OS 1.0 到 iOS 14 编程语言演变

在我之前关于苹果在 iOS 14 中使用了 Swift 和 SwiftUI 文章,我统计了 iOS 中使用 Swift 和 SwiftUI 内置应用程序数量。...在这篇新文章,我通过测量 iOS 中二进制文件总数来回答这个问题。我更进一步,并计算使用其他编程语言二进制文件数量:Objective-C、C++ 和 C。...检测不同编程语言 在我之前关于苹果在 iOS 14 中使用 Swift 和 SwiftUI 文章,我统计了使用 Swift 和 SwiftUI 内置应用程序。...检测 Swift 检测 Swift 使用可以使用类似的方法来完成,如2016 年一篇帖子所述。...(第一个公共 SwiftUI 专用框架)构建 iOS 14 小部件都使用了 Objective-C

2K30
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin 1.4-M1 现已发布!

算法修复了这个问题,在任何情况下您都可以传递 lambda,而不是 SAM 接口,这正是您期待运作方式。 在更多用例自动推断类型 推理算法会为许多用例推断类型,而推理要求您明确地指定它们。...现在,我们将它从标准完全移除。 从浮动类型到 Byte 和 Short 转换弃用 标准包含浮点数转换为整数类型函数:toInt()、toShort()、toByte()。...在 1.4-M1 ,此行为已成为默认行为。在一些情况下,这可能会破坏调用 Kotlin 框架现有 Objective-CSwift 代码。...在 Objective-C/Swift 互操作处理异常变更 在 1.4 ,针对转换异常方式,我们稍微变更从 Kotlin 生成 Swift API。...编译为 SwiftObjective-C 框架时,拥有或要继承 @Throws 注解函数在 Objective-C 中表示为产生方法 NSError*,在 Swift 中表示为 throws

3.4K20

全新Swift从入门到进阶实战探探iOS APP

然而,另一项研究证明了Swift在性能上确实优于Objective-C,这表明Swift具有许多特性,对开发者来说更高效8。安全性:Swift被设计为一种更安全编程语言。...文本输入密集型应用:同样地,考虑到SwiftUI在处理多个填充文本字段方面的高效性18,它可以被广泛应用于需要用户频繁输入文本应用程序。...在iOS应用开发,提高Swift编程语言性能高级技巧可以从多个方面进行考虑。...在Swift开发,可以动态规划思想应用于算法设计和优化,特别是在处理需要在给定限制下找到最优解问题时21。...利用Swift特性:Swift被设计为比Objective-C更快,并提供了更多现代语言特性22。开发者应该充分利用这些特性来提高代码执行效率和安全性。

25510

Swift 周报 第十九期

活动将于 12 月 12 日至 16 日举行,届时提供多种语言和多个时区在线一对一咨询和小组 Q&A。...例如:在您希望插入应用程序位置进行调试,而无需手动调用重建应用程序 包含可选插件系统将自己注册到主应用程序以更改行为 希望在启动时进行 1 次设置而不要求开发人员显式调用其配置第三方作者...建议解决方案: 我建议我们自动 macOS 上生成最低支持版本添加到用户当前 macOS 版本。...生成类将在 Swift 实现,但与 Objective-C 类没有区别,完全支持 ObjC 子类化和运行时技巧。...使用 @objcImplementation,您可以像编写 Objective-C 类一样手写头文件,但不是在 Objective-C 实现方法和属性,而是在 Swift 实现它们。

1.5K30

自动删除代码?Uber 开源利器「食人鱼」

场景描述:开发人员必须要面对一个问题,就是要处理在不断完善积累过时代码,近日 Uber 开源了一个自动删除代码工具,它可以寻找代码废弃功能标志模块,在配合开发者情况下,进行代码删除或者重构操作...Piranha 可以在 Uber Android 和 iOS 代码运行,目前支持 Objective-CSwift 和 Java 三种编程语言。...使用这个方式拥有诸多优点,它可以新功能测试完善之后,再将其发布为全面可用,还能够针对不同用户定制差异化服务(A/B 测试),当出现 Bug 时支持回滚,工程师还可以远程禁用应用程序故障部分。...Piranha 已经在 Objective-CSwift 和 Java 程序运行良好,但为了让其工作更高效,以实现 Piranha 自动进行标志清除,还需要搭建一个更完善系统。...删除代码,就用食人鱼吧 当然,在上述介绍可知,要使用 Piranha,代码需满足以下条件: 广泛使用功能标志; 具有特定 API 以控制功能标志行为; 代码用 Java、SwiftObjective-C

71110

Swift 是猴还是猿?

(2)Swift版本迭代历史 Swift 1.x版本属于刚开始阶段,2.x版本添加了很多特性,3.x版本在Swift生涯属于革命性一步,其中改动了很多,语法和2.x版本也有较大差异。...Swift 结合了C和Objective-C 优点并且不受 C 兼容性限制。Swift采用安全编程模式并添加了很多特性,比如范型、闭包、函数式编程等,使编程更简单,更灵活,也更有趣。...,针对社区建议,在Swift特性支持上Swift团队并非单纯建议特性就会加上,而往往是后退一步,思考更多,理解开发者真正需要特性,此后考虑着手开发。...repeating Swift Array 类型还提供一个可以创建特定大小并且所有数据都被默认构造方法。 元组 Swift元组(tuples)把多个值组合成一个复合值。...同时更多是让语法更简单,编程语言语法进行简洁化和优化,让程序员省掉关注语法时间,更多时间和精力放在应用程序逻辑开发上。比如:省略分号;??

3.8K30

Xcode 10

您可以在调试时应用程序换为暗模式。这一切都是使用Xcode仅适用于您应用控件完成。无需更改系统设置。...使用命令单击选择符号或整个结构,以转换或重构Swift,C,C ++和Objective-C代码。...可以在导航器快速访问常用操作,例如创建和合并分支。 自定义调试工具 使用Instruments,您最终可以淘汰print()语句,这些语句换为OSLog路标和您自己自定义仪器。...与Swift 4.0相比,最新Swift编译器可以构建大型应用程序速度提高两倍以上。*与Xcode构建系统相结合,您日常编辑,构建和测试工作流程更快。...准备好后,只需将训练模型拖放到您应用程序即可。 了解有关Create ML更多信息 原文:https://developer.apple.com/xcode/

3K20

Swift3项目升级到Swift5

准备 Xcode 11.4 Xcode 10.1 源项目能在支持Swift3.x Xcode 10.1正常运行 , 所以升级步骤先在Xcode 10.1升级到 Swift4.x , 然后在Xcode...第三方。...完成后项目变为 Swift4.x Xcode 11.4打开项目、重复上述操作 操作完成后项目变为 Swift5.x 修改Pod文件 首先更新本地pod仓库,修改Podfile对应第三方版本,然后重新安装...在Swift 4,这种自动@objc推断已被废弃,因为生成所有这些Objective-C入口点有代价。 当“Swift 3 @objc Inference”设置为“On”时,它允许代码运行。...但是,它会提示这些需要解决弃用警告,建议“修复”这些警告,并将设置切换到“Default”。Swift项目的默认为“Default”。

1.2K10

新手必看,史上最全iOS开发教程集锦,没有之一!

不管OC和Swift未来究竟如何发展,学习一门语言本质,是接受一种思考方式。以下会涵盖两种语言教程供大家选择。 ?...Objective-C语言开发iOS上iPhone和iPad应用程序而设计。...在学习本教程之前,你需要对计算机编程术语有基本了解。对任何编程语言(尤其是Objective-C编程语言)基本理解帮助你更快地学习iOS编程概念。 2. ...对于本教程,你需要Xcode 10,这是MacOS标准开发环境, 如果你是Xcode版本9或更低版本,本教程一些代码无法运行。 ? 6. ...每周都会发布优秀视频来展示和讨论在Swift构建项目时遇到问题以及解决方案。 7.

5.8K21

苹果宣布使用Swift全面重写Foundation框架

作者 | Sergio De Simone 译者 | 明知山 策划 | 丁晓昀 Swift 团队已经开始 Foundation 框架一个开源实现。...实现完全采用 Swift 编写,旨在通过消除 Objective-CSwift 之间转换成本来提升性能,并对其进行模块化和清理。...正如苹果工程师 Tony Parker 在 Swift 论坛上所解释那样,性能方面带来好处是非常显著: 使用 Swift 重新实现日历应用速度是 C 1.5 到 18 倍(在创建、日期计算等各种测试基准调用...Swift 应用程序。...这将有机会删除一些目前可以直接由 Swift 语言和标准提供特性,如 NSCoding 和 NSKeyedArchiver,取而代之是 Codable,或者 Lock、OperationQueue

88530

现代编程语言哪家强?2020年,你或许应该了解这7门编程语言

根据 StackOverflow developer 调查,大多数主流编程语言都在「最可怕语言」类别占据了榜首: 图片来源:Stackoverflow 我将以第一款 iPhone 发布时候,...因为 Kotlin 在 JVM 运行,因此你可以使用现存 Java 庞大生态系统。...所以,Kotlin 有很好工具支持。 有两个有趣项目:Kotlin Native( Kotlin 编译为本机代码)和 Kotlin.js(Kotlin 转换为 JavaScript)。...由于没有模块化和「回调地狱」,开发人员不喜欢维护特别大 JavaScript 项目。 Google 甚至开发了一个平台, Java 代码转换为 JavaScript 代码(GWT)。...SwiftObjective-C 代码具有良好互操作性,并且已经成为 iOS 应用程序开发主要编程语言。 主要特性: Swift 一个致命优点是它语言设计。

1.2K20

成为一名优秀 Swift 开发人员 10 个小技巧

Swift 协议类似于 Java 接口,这是 OOP 编程中最基础理论。...在项目中集成最热门第三方 尽量不要重新发明轮子。为项目选择正确是一项有意思工作,大多数情况下,使用基本就正确做法。这可以让你专注于特定应用程序特定功能,而不是在常见功能上浪费时间。...使用扩展并合理使用它们来创建公共 我很喜欢 Swift 扩展。在使用 Objective-C 时,我总是不情愿地使用继承。当然这并不总是错误,正确使用子类也不会出错。...但是 Swift 扩展可以轻松地简单方法集成到通用类上,而无需做任何复杂事情。...结论 我没有提到所有基本 OOP 原则。显然,您必须以正确方式实现类,封装,抽象和设计模式。在本文中,我重点更多地放在Swift功能上,以提高代码效率并传递Swift机制优点。

2.3K40

深入了解 iOS 初始化

,在 Objective-C ,子类会直接继承父类所有的初始化方法 SwiftSwift ,初始化器规则严格且复杂,目的就是为了使代码更加安全,如果不符合规则,会直接报错,常常会让刚接手 Swift...Objective-C 还是 Swift ,都可以有多个指定初始化器和多个便利初始化器。...如果不是可以从多个不同源初始化,最好只创建一个指定初始化器 • 无论在 Objective-C 还是 Swift ,都需要在便利初始化器调用指定初始化器 • 在 Objective-C ,初始化时候不需要保证所有属性...(成员变量)都有值 • 在 Objective-C ,如果存在一个指定初始化器,那么原来指定初始化器就会自动退化成便利初始化器。...必须重写定初始化器,在里面调用指定初始化器 • 在 Swift ,初始化时候需要保证类(结构体、枚举)所有非可选类型属性都会有值 • 在 Swift ,必须在初始化完成后才能调用实例属性

98410

干货 | 一波N折携程酒店Swift-Objc混编实践

模块稳定意味者二进制稳定,Swift之间调用终于不用再依赖源码或者编译器版本,这对于Swift发展来说是一个很大进步,更有助于推动Swift发展。...,这时就必须要把这些头文件导入到Objective-Cumbrella headerSwift 会通过这个文件看到所有你在 umbrella header 公开暴露出来头文件。...创建modulemap方法很简单,如果是动态在编译时候系统会自动我们生成,如果是静态则需要我们手动生成并编辑这个文件。...在这次实践过程我们领略到了Swift作为一门先进语言魅力,众多特性让研发效率有了显著提高,经过我们Swift重写framework代码量都有不同程度下降。...由于篇幅和主题原因,本文就止步于探讨Swift集成到Objc工程一些问题和经验。

1.4K31

App架构设计经验谈:技术选型

,用来展示H5页面。...Objective-C/Swift 我在项目中选择了Swift,主要基于三个原因: Swift真的很简洁,生产效率很高; Swift取代Objective-C是必然趋势; 目前iOS只有我一个人开发,...当语言上选择了Swift,相应一些第三方也面临着选型。比如,依赖管理,Objective-C时代大部分用CocoaPods,Swift时代,我更喜欢Carthage。...再推荐几个关于Swift第三方: Alamofire:Swift版本网络基础,和AFNetworking是同一个作者 AlamofireImage:基于Alamofire图片加载 ObjectMapper...:Swift版本Json和Model转换 AlamofireObjectMapper:Alamofire扩展,结合了ObjectMapper,自动JSONResponse数据转换为Swift

1.4K10

SwiftObjective-C混编在有赞移动实践

所以我们在微商城和零售等业务线尝试使用 Swift 开发部分业务,并在二方中进行混编开发,在此我们一些混编经验分享出来。...微商城项目初期: 所有模块均依赖 common 模块,同时所有模块也依赖了 Cocoapods 二/三方;在架构,common 被封装为 development pod, 并在 podspec... Swift pods 构建成静态,目前已经在消息业务模块已经实践成功,在线上状况稳定。在此总结了一些混编方案所能遇到问题。...5.5 Swift 调用 Objective-C Swift 模块文件,用import xxx 形式进行模块引用,包括 Objective-C 二/三方 5.6 Objective-C 调用...混编二方,我们后面会进行越来越多模块开发用混编这种形式,模块采用 Swift 代码,老业务还是 Objective-C 不动这种方案。

2.1K20
领券