67 天前 / hyper0x
在程序设计的时候,我们通常希望使用同样的数据结构或算法,就可以处理许多不同类型的元素,比如通用的 List 或只需要实现 compare 函数的排序算法。对于这个问题,不同的编程语言已经提出了各种各样的解决方案:从只是提供对特定目标有用的通用函数(如 C,Go),到功能强大的图灵完备的通用系统(如 Rust,C++)。在本文中,我将带你领略不同语言中的泛型系统以及它们是如何实现的。我将从 C 这样的不具备泛型系统的语言如何解决这个问题开始,然后分别展示其他语言如何在不同的方向上逐渐添加扩展,从而发展出各具特色的泛型系统。
84 天前 / Mr_Coder_
一、概要cocoapods-imy-bin功能点: 组件二进制化,无入侵式支持组件二进制化,完全自动化,无需手动操作。致力于解决Ci打包速度慢、研发编译慢等编译问题。本地配置文件 - Podfile_local二进制源码调试pod bin code,类似美团 iOS 工程 zsource 命令背后的那些事儿的效果。命令快捷键pod bin imy,如游戏快捷键,根据配置会在特定目录执行特定命令(如任意终端目录下,执行某个特定目录的pod update --no-repo-update命令),减少其他繁琐操作。支持任意个快捷键。
85 天前 / 携程技术
作者简介 青花瓷的平方,携程技术专家,主要从事无线开发,负责携程支付 iOS 相关开发工作。 一、引言 Combine.framework 是 Apple 在 2019 WWDC 上基于 Swift 推出的函数响应框架(Functional Reactive Programming),支持 Apple 全平台的操作系统(iOS13+,macOS 10.15+ 等)。函数式响应框架无论在哪个平台早已流行泛滥,开源的 Rx 更是实现了各种语言的响应式编程框架。Apple 在这个时候推出响应式框架,无疑是对自己护城河的进一步巩固。事实上 SwiftUI 的数据驱动就是依赖 Combine。
118 天前 / openio
背景 苹果在 2014 年发布了 Swift,这门语言一诞生就备受开发者们的关注。由于其多方面的优势和苹果的极力推崇,Swift 也愈演愈烈。但就如很多语言一样,初期的 Swift 也有许多诟病,一度让开发者们又爱又恨。近年,Swift 也逐步实现了 ABI 稳定、模块稳定、SPM 完善等等。我们的团队也从今年初将 Swift 混编提上日程,经过充分的调研工作和紧锣密鼓的混编实施后,在 7 月份已经顺利上线了。本篇文章对之前的调研内容重新做了梳理,在技术和环境等各方面做一个完备的分析。
160 天前 / mr7
ABI Stability & Module Stability 以及 Swift 优势 2019 年 Swift 5 发布,标志这门语言迎来了一个重大的里程碑。与之前的版本相比除了一些基础语法的改变,更重要的是 Swift5 对 Apple 所有平台都是 ABI(Application Binary Interface) 稳定的,即二进制接口兼容;对其他平台 Linux,Windows 等的 ABI 稳定,Swift 核心团队在 Swift 官网上也明确表示会持续跟进。 ABI 稳定带来的好处显而易见,使用 Swift5 构建的 App 将可以与 Swift 6 的标准库对话,如下图所示。
243 天前 / 静逸秋水
如果我们需要需要实现一个类似打印当前函数调用的文件名和函数的化,我们需要借助一些类库。 在 swift 中我们可以借助 #file 和 #line 来实现数据获取 /。 类似 public static func log(file: String = #file,line: Int = #line) {}而在 Android 我们需要借助 Thread 来实现 var str = ""try {val filename = Thread.currentThread().stackTrace[your_trace_index].fileNameval line = Thread.currentThread().stackTrace[your_trace_index].lineNumberstr = " $filename [l$line]"}catch (err: IOException) {// print(err)}return str 其中我们只需要确...
253 天前 / 静逸秋水
Swift 以前是通过 addObserver 来实现对某个属性的变化监听,而最新的变化,书写起开更加方便。 observer = test.observe(\.field, options: [.new, .initial]) { (object, change) inprint(change)}一定要用属性赋值当前的 observe 结果,没有的话可能会造成 change 不生效。 对 UIScrollView 的滚动监听,我们可以使用 UIScrollViewDelegate extension UIScrollViewDelegate{func scrollViewDidScroll(scrollView: UIScrollView){//do something}}这里推荐使用 Observe 比较方便的是可以进行模块的逻辑的拆分...
255 天前 / mr7
作者丨阿里文娱高级无线开发工程师 大斗如果以前不使用 Swift 的原因之一,是 Swift 不稳定造成的开发成本过大,那随着 Swift 5.0 的发布,终于可以抛开这个顾虑了。 01 背景 随着 Swift 5.0 的发布,Swift 的 ABI 终于稳定下来了。如果是很早就拥抱 Swift 的开发者,一定经历过各 Swift 大版本发布时的痛苦。回想在前一家公司将 Swift 2.2 升级到 Swift 3.0,基本上是换了个语言,两个版本之间的差异非常之大,升级起来简直是苦不堪言。
296 天前 / limall
打印端通过 Udp 协议来接收日志消息,方便移植到其它平台通过 Udp 接收消息的好处还有,不需要将调试设备连接到 mac 上,仅通过局域网便可打印日志可同时打印多个设备发送来的日志,可通过 logid 筛选各个设备的日志 logcat-swift 分为打印端和发送端两部分,打印端是一个单独的 app,它基于 electron 开发,通过 udp 协议接收发送端发来的 log 信息并分条理地打印出来;发送端是一些 swift 文件,将它们复制到你的 swift 项目中,调用其 api 将 log 信息发送给打印端打印。
302 天前 / hlc0000
Swiftlycache is a thread safe IOS general cache library written with swift 5. FeaturesSupport all data types complying with the codable protocolObjects can be evicted with least-recently-used algorithmIt can be configured to automatically recycle objects or manually recycle objects when receiving memory warnings or when the application enters the backgroundUsing subscript can make reading and writing data more convenientSupport reading data using sequence generatorInstallationCocoaPods1.Add pod 'SwiftlyCache...
341 天前 / mr7
作者|姜沂 ( 倾寒) 出品|阿里巴巴新零售淘系技术部 背景 手淘 iOS APP 在 2019 年经过了约一年的时间,完成了 Swift 语言从调研到基础设施建设再到顺利落地业务。 手淘作为一个航母级别的 APP, 组织结构,工程结构,都是普通 APP 难以企及的,在手淘中实践犹如在沼泽地艰难探索,期间和集团内众多 Swift 爱好者,中间件负责人,一起努力探索出一条较为明朗的 Swift 落地指南。 时间轴 Swift 预研 Swift 语言在 2018 年就已经宣布 ABI 稳定是最重要的目标,虽然早在 Swift 4.x 时代, 语法就已基本不变,但受限于手淘是一个航母级 APP...
379 天前 / itfanr
概念线程与进程线程与进程之间的关系,拿公司举例,进程相当于部门,线程相当于部门职员。即进程内可以有一个或多个线程。 并发和并行并发指的是多个任务交替占用CPU,并行指的是多个CPU同时执行多个任务。好比火车站买票,并发指的是一个窗口有多人排队买票,而并行指的是多个窗口有多人排队买票。 同步和异步同步指在执行一个函数时,如果这个函数没有执行完毕,那么下一个函数便不能执行。异步指在执行一个函数时,不必等到这个函数执行完毕,便可开始执行下一个函数。
422 天前 / KeyLiu刘奇
黑客技术点击右侧关注,了解黑客的世界! Java开发进阶点击右侧关注,掌握进阶之路! Python开发点击右侧关注,探讨技术话题! 作者 | Lorenzo Boaro 翻译 | 漫慢忙 来源 | raywenderlich 本文翻译自 raywenderlich 教程 Swift 5.1 Cheat Sheet and Quick Reference (https://www.raywenderlich.com/6362977-swift-5-1-cheat-sheet-and-quick-reference) ,请参考原文阅读声明常量和变量 使用 let 关键字声明一个常量let double: Double = 2.0 // double = 3.0 // 错误:不能给常量重新赋值 let inferredDouble = 2.0 // 推断为一个 Dou...
434 天前 / mr7
作者|姜沂(倾寒) 出品|阿里巴巴新零售淘系技术部 S1 阶段在使用 SwiftUI 编写集团内部使用的 SOT APP时,有幸参与到 GAIA (FaaS)平台云端一体化的探索,从头到尾实现了一套基于 Swift 语言实现的遵守 GAIA Funtion 标准的 Runtime Framework,并完成了从客户端到后端使用统一的语言栈完成一体化链路的探索。 作为一个纯 iOS Native 端开发者,对于后端的技术体感,大部分还遗留在上学期间做的论坛管理系统,加之 FaaS Serverless 等都是一些后端领域较前沿的技术点,尤其是在后端还算是初生牛犊的 Swift 语言,期间走过无数的弯路...
476 天前 / 楼外青山
SwiftShield是一个用于为你的iOS项目对象生成不可逆加密名称的工具,其目的是保护你的iOS apps不被一些逆向工具所破解(如class-dump和Cycript)。 class fjiovh4894bvic: XbuinvcxoDHFh3fjid { func cxncjnx8fh83FDJSDd() { return vPAOSNdcbif372hFKF() }}自动模式(仅限 Swift)使用-automatic标签,SwiftShield将使用SourceKit自动混淆整个项目(包括依赖项)。请注意,SwiftShield的自动模式的范围与Xcode的本机重构工具的范围直接相关,后者不会重构所有内容。