泛型代码让你能根据你所定义的要求写出可以用于任何类型的灵活的、可复用的函数。你可以编写出可复用、意图表达清晰、抽象的代码。
2015 年 WWDC,苹果第一次提出了 Swift 的面向协议编程(Protocol Oriented Programming,以下简称 POP ),这是计算机历史上一个全新的编程范式。在此之前,相对应的面向对象的编程(Object Oriented Programming,以下简称 OOP )已经大行其道 50 年,它几乎完美的解决函数式编程(Functional Programming)的缺点,并且出现在从大型系统到小型应用、从服务器端到前端的各个方面。它的优点被无数程序员称颂,它解决了诸多开发中的大小问题。那么问题来了,既然 OOP 如此万能,为什么 Swift 要弄出全新的 POP ?
翻译自:https://docs.swift.org/swift-book/LanguageGuide/Generics.html
Swift 泛型条件性符合(Conditional conformances) 表示泛型类型只有在其类型参数满足某些要求时才符合特定协议的概念。
今天是元宵节,祝大家元宵节快乐!在Swift中的数组和字典中下标是非常常见的,数组可以通过索引下标进行元素的查询,字典可以通过键下标来获取相应的值。在使用数组时,一个常见的致命错误就是数组越界。如果在你的应用程序中数组越界了,那么对不起,如果由着程序的性子的话是会崩溃的。为了防止崩溃呢,我们会对集合做一些安全的处理。比如对数组进行扩展,从而对数组的索引进行安全检查,保证数组的index在正常范围内。在Objective-C中也是经常对数组,字典等做一些处理操作。 今天的博客的主要内容是先对Objec
一、swift简史 1、介绍 swift是苹果公司于2014年推出用于撰写OS和iOS应用程序的语言。它由苹果开发者工具部门总监“克里斯.拉特纳”在2010年开始着手设计,历时一年完成基本的架构。到后来苹果公司大力投入swift语言的研发,于2014年发布这一语言的第一版本。swift2.0之后的语法则趋于稳定,2017年发布的swift4.0虽有改动,但也只是增添了一些新特性。这些新特性需要在Xcode9上运行才能显示出效果。值得一提的是它支持unicode9,也就是说,可以用某些图片图标来充当变量。
写这篇文章主要是为了给组内要做的分享准备内容。这段时间几个项目都用到 Swift,在上次 GIAC 大会上就被问到为什么要用 Swift,正好这个主题可以聊聊 Swift 的哪些特性吸引了我。
Swift 5.0 最重要的自然是ABI Stability, 对此可以看这篇 Swift ABI 稳定对我们到底意味着什么 。
5、switch语法与objc差别很大,执行一个分支马上停止,不需要break语句跳出,反而想要穿透到下面分支还要用fallthrough语句。
数据结构中的栈与队列还是经常使用的,栈与队列其实就是线性表的一种应用。因为线性队列分为顺序存储和链式存储,所以栈可以分为链栈和顺序栈,队列也可分为顺序队列和链队列。本篇博客其实就是《数据结构之线性表的顺序存储于链式存储(Swift面向对象版)》这篇博客的应用。本篇博客会分别给出队列的顺序和链式存储,以及栈的顺序和链式存储。 说到栈和队列这两种数据结构,理解起来应该不难。队列就是进行排队的数据结构,一个队列肯定是线性结构了,之所以称之为队列,是因为有着先入先出(FIFO ----first in first
分析三种派发方式主要从性能及动态性两方面讨论,这两个特性相对而言是矛盾的,性能要求高,则动态性差,反之亦然,其中直接派发又被称为静态派发,函数表派发与消息派发称为动态派发,大多数语言都会支持上面派发方式的一种到多种。如
本篇将详细总结介绍Swift泛型的用法; Swift泛型代码让你能够根据自定义的需求,编写出适用于任意类型、灵活可重用的函数及类型。它能让你避免代码的重复,用一种清晰和抽象的方式来表达代码的意图。
ReactiveX 最近刚刚把接手的OC项目搞定,经过深思熟虑后,本人决定下个项目起就使用Swift(学了这么久的Swift还没真正用到实际项目里。。。),而恰巧RxSwift已经出来有一些时间了,语法也基本上稳定,遂只身前来试探试探这RxSwift,接着就做了个小Demo,有兴趣的同学可以瞧一瞧~ Exhibition 结构 . ├── Controller │ └── LXFViewController.swift // 主视图控制器 ├── Extension │ └── Res
序列和集合是一门语言中重要的组成部分,下面我们就通过这篇文章来看看 Swift 中的序列和集合。
我把从读者那里收到的600多个最常见问题的答案放在一个地方:the Swift 5 Knowledge Base。它回答了基本和高级的问题,并提供了许多免费代码,只要你喜欢,你可以重复使用。如果遇到问题,请先在那里搜索。
翻译自:https://docs.swift.org/swift-book/LanguageGuide/Extensions.html
Swift语言引入了协议、协议的扩展、泛型等新特性,因此使用Swift语言可以很好地面向协议编程;Swift语言将函数和闭包提升为语言的一等公民,函数可以作为一个变量、可以作为其他函数的参数、作为其他函数的返回值等来传递,所以我们可以使用Swift来进行函数式编程,另外Swift也提供了很多高阶函数来辅助我们进行函数式编程;Swift也提供了属性的权限限定等面向对象的基础设置,因此在Swift中也可以面向对象来编程。
闭包能够捕获和存储定义在其上下文中的任何常量和变量,即闭合并包裹那些常量和变量,因此被称为“闭包”。
本文收录总结了常见的 Swift 和 Objective-C 的面试题,希望对大家有所帮助。
面向对象编程(OOP,Object Oriented Programing)有三大特性:
Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。 swift 是一种安全,快速和互动的编程语言。 swift 支持代码预览(playgrounds),这个特性可以允许程序员在不编译和运行应用程序的前提下运行 Swift 代码并实时查看结果。
Swift 5.1现在已经正式发布,尽管只是次要版本,它包含了大量的更改和改进。从基本的新功能,例如模块稳定性(使SDK供应商可以交付预编译的Swift框架)到所有SwiftUI以及其他功能的新语法功能。
本期是 Swift 编辑组整理周报的第三十七期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。
Swift 5.1中扩展了Self的使用,在class,struct, enmu中使用时候可以指向这个类型。这点在动态类型中很有用,特别是某些类型需要在运行时才能决定时候。
素材:Language Guide 初次接触 Swift,建议先看下 A Swift Tour,否则思维转换会很费力,容易卡死或钻牛角尖。 同样是每一章只总结3个自己认为最重要的点。这样挺好!强迫你去思考去取舍。以后再看,也方便快速重建记忆。 注意: 个人笔记,仅供参考,不保证严格意义上的正确性。 The Basics * 整数,优先使用 Int,浮点数,优先使用 Double * 可以使用 0b 表示二进制,可以在数字中间插入可读字符 _,如 182_3880_25 * as 仅用于兼容类型间的相互转换.
Swift的总体目标是强大得足以用于低级(low-level)系统编程,又足够容易以便初学者学习,有时会导致非常有趣的情况——当 Swift 功能强大的类型系统要求我们配置相当先进的技术来解决乍看之下似乎微不足道的问题的时候。
Swift语言中,具有类特征的类型包含三种,即枚举类型、结构类型(包含基本类型,基本类型实际都是结构类型的特例)、类。当中枚举类型、结构类型是属于值类型,类属于引用类型。三种类型都可以加入�属性、方法、下标方法,可以使用扩展进行功能扩展,使用协议等。
翻译自raywenderlich网站iOS教程Swift Algorithm Club系列
Swift的总体目标是既强大到可以用于底层系统编程,又足够容易让初学者学习,这有时会导致相当有趣的情况——当Swift的类型系统的力量要求我们部署相当高级的技术来解决乍一看可能更微不足道的问题。
在这篇文章中,我们将建立一个条形图,比较基督城地区自然散步的持续时间。我们将使用今年推出的新的Swift Charts 框架,并将看到如何绘制默认不符合 Plottable 协议的类型的数据,如 Measurement<UnitDuration>。
随着iPhone X的来到,iOS11的发布,Swift语言也更新到了第4个版本。在Swift4中,无论是代码风格还是编程理念都更进一步的融合了许多现代编程的思想。对于熟悉传统语言的开发者来说(尤其是Objective-C、Java和C++),可能会感觉这些特性并没有多大的价值反而非常不习惯,但是我们依然可以茶余饭后(没事干的时候),一窥Swift4语言的玩法,体验一下Swift语言的设计思想和编码风格。
《Swift开发规范》发布之后得到了很多Swifter的关注,很多读者提议最好为每条规约添加一些代码示例,其实在发布之前,我就考虑到要加代码示例这件事,但是后来还是因为偷懒没加。最近利用了空余时间,对之前的版本进行了完善,加入了代码示例及编译效率规约等等,并且考虑到读者对某些规约有些疑惑,也为部分规约增加了说明,推出新的版本--《Swift开发规范-修订版》。
Swift 中的泛型语法是为了类型通用性设计,这种通用性允许在函数输入和输出时,使用复杂的类型集合来表达,前提是类型必须前后一致。例如下面这个例子是从两个序列构建一个数组:
Swift 的语法与 Kotlin 有很多相似之处,整理了一些 Swift 和 Kotlin 的对比,下面是一些例子,大家不妨来看看。可以说掌握了kotlin 再去看swift简直爽的不要不要的。学习成本大大降低。
协议定义了一个蓝图,规定了用来实现某一特定任务或者功能的方法、属性,以及其他需要的东西。类、结构体和枚举都可以遵循协议,并为协议定义的这些要求提供具体实现。某个类型能够满足某个协议的要求,就可以说该类型遵循这个协议。
开发规范的目的是保证统一项目成员的编码风格,并使代码美观,每个公司对于代码的规范也不尽相同,希望该份规范能给大家起到借鉴作用。。
Swift 在 JSON解析方面有个比较有名的第三方库——SwiftyJSON,之前我也一直用的它。虽然用着还不错,但是它主要是为了避免手动解析 JSON 数据时大量的解包操作,降低解包不当导致 crash 的风险,感觉主要是注重安全性,易用性方面还是差了点。它支持下标操作,但毕竟是以字符串为键取值,IDE 不能自动补全,不仅麻烦还容易写错,而且用下标取到的值是JSON类型,一般还需要再进行类型转换,终究没有操作一个 Model 来得方便。所以我一直想写一个 JSON-Model 的映射器,我想要的效果是这样的:
今天博客中的Alamofire源码的版本是以3.4版本为例。上篇博客系统的对NSURLSession相关的东西进行了详细的解析,详情请看《详解NSURLSession》,为了就是给本篇博客打下基础。因为AlamoFire就是对NSURLSession及其相关的东西进行了进一步的封装,让网络请求使用起来更为简单。本篇博客就详细的来窥探一下AlamoFire源码,主要来看一下AlamoFire是如何对NSURLSession进行封装的,并且来看一下在封装时使用了哪些Swift语言中的高级用法,也就是看一下Swi
// 插入操作 shoppingList.insert("Maple Syrup", at: 0)
在这篇文章中,我们将建立一个条形图,比较基督城地区自然散步的持续时间。我们将使用今年推出的新的Swift Charts框架,并将看到如何绘制默认不符合Plottable协议的类型的数据,如Measurement<UnitDuration>。
当你编写涉及共享状态的代码时,如果你不确保这个共享状态在跨线程使用时是安全的,你就会在许多地方遇到数据竞争的问题。
在Swift 2.0版本中,Swift语言对其错误处理进行了新的设计,当然了,重新设计后的结果使得该错误处理系统用起来更爽。今天博客的主题就是系统的搞一下Swift中的错误处理,以及看一下Swift中是如何抛出异常的。在编译型语言中,错误一般分为编译错误和运行时错误。我们平时在代码中处理的错误为运行时错误,我们对异常进行处理的操作的目的是为了防止程序出现错误而导致其他的副作用,比如用户数据未保存等等。 在今天的博客中,先给出主动产生异常的几种情况,然后再给出如何处理被动异常。 一、主动退出程序的几种情况 在
UserDefaults非常适合存储简单的设置,例如整数和布尔值,但是当涉及复杂数据时——例如自定义Swift类型——我们需要做更多的工作。
不久前,我正在工作中开发一项新服务,该服务由 Swift Package 组成,该 Package 公开了一个类似于Decodable协议,供我们应用程序的其余部分使用。事实上,该协议是从Decodable本身继承下来的,看起来像这样:
本期是 Swift 编辑组自主整理周报的第九期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。
本期是 Swift 编辑组自主整理周报的第二十一期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。
Xcode 8.3 和 Swift 3.1 已经发布了(3/28)! 可以通过 AppStore 或 Apple Developer 进行下载 Xcode 8.3 优化了 Objective-C 与 Swift 混编项目的编译速度. Swift 3.1 版本包含一些期待已久的 Swift package manager 功能和语法本身的改进。 如果您没有密切关注 Swift Evolution 进程,请继续阅读 - 本文非常适合您! 在本文中,我将强调Swift 3.1中最重要的变化,这将对您的代码产生重
本文笔者在 MDCC 16 (移动开发者大会) 上 iOS 专场中的主题演讲的文字整理。发布于 2016年11月29日 最后更新于 2020年10月22日
Xcode 8.3 优化了 Objective-C 与 Swift 混编项目的编译速度.
领取专属 10元无门槛券
手把手带您无忧上云