★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10977730.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
2019年6月3日
- 针对Swift 5.1进行了更新。
- 添加了有关指定其返回值符合的协议的函数的信息,而不是向“ 不透明类型”一章提供特定的命名返回类型。
- 添加了带隐式返回和速记吸气器声明的功能部分,其中包含有关省略的功能的信息
return
。 - 添加了有关使用类型上的标信息类型下标部分。
- 更新了结构类型的成员初始化程序部分,现在成员初始化程序支持省略具有默认值的属性的参数。
- 添加了有关动态成员的信息,这些成员在运行时通过关键路径查找到dynamicMemberLookup部分。
- 更新了“ 自我类型”部分,现在
Self
可用于引用当前类,结构或枚举声明引入的类型。
2019年3月25日
- 更新了Swift 5.0。
- 添加了“ 扩展字符串分隔符”部分,并使用有关扩展字符串分隔符的信息更新了“ 字符串文字”部分。
- 添加了dynamicCallable部分,其中包含有关使用该
dynamicCallable
属性动态调用实例作为函数的信息。 - 添加了unknown和Switching Over Future Enumeration Cases部分,其中包含有关使用
unknown
switch case属性处理switch语句中的未来枚举情况的信息。 \.self
向Key-Path Expression部分添加了有关身份密钥路径()的信息。- 添加了有关
<
在平台条件中使用小于()运算符到条件编译块部分的信息。
2018年9月17日
- 针对Swift 4.2进行了更新。
- 添加了有关访问所有枚举案例的信息到“ 迭代枚举案例”部分。
- 添加了有关信息
#error
,并#warning
在编译时诊断的声明部分。 - 添加了有关内联到和属性下的声明属性部分的信息。
inlinable
usableFromInline
- 添加了有关在运行时按名称查找属性下的“声明属性”部分的成员的信息
dynamicMemberLookup
。 - 添加了有关“声明属性”部分的属性
requires_stored_property_inits
和warn_unqualified_access
属性的信息。 - 添加了有关如何根据用于条件编译块部分的Swift编译器版本有条件地编译代码的信息。
- 添加了有关信息
#dsohandle
的文字表达的部分。
2018年3月29日
- 更新了Swift 4.1。
- 向Equivalence Operators部分添加了有关等价运算符的综合实现的信息。
- 加入约有条件协议一致性的信息扩展声明所述的部分声明章,向有条件符合的协议的部分协议章。
- 在“关联类型的约束”部分中为“ 使用协议”添加了有关递归协议约束的信息。
- 添加了有关信息
canImport()
和targetEnvironment()
平台的条件,条件编译块。
2017年12月4日
- 更新了Swift 4.0.3。
- 现在,关键路径支持下标组件,更新了“ 关键路径表达式”部分。
2017年9月19日
- 针对Swift 4.0进行了更新。
- 在Memory Safety章节中添加了有关内存独占访问的信息。
- 添加了关联类型和通用子句部分,现在您可以使用通用
where
子句来约束关联类型。 - 添加了有关多字符串文字的信息字符串文字的部分字符串和字符章节,并以字符串文字的第词法结构篇章。
- 更新了的讨论
objc
属性的声明属性,现在,这个属性是在更少的地方推断。 - 添加了通用下标部分,现在下标可以是通用的。
- 更新在讨论协议组合的的部分协议章节,并且在协议组合类型的的部分类型章,现在协议组合物类型可包含一个超类的要求。
- 现在更新了扩展声明中的协议扩展的讨论,这
final
是不允许的。 - 向断言和前提条件部分添加了有关前置条件和致命错误的信息。
2017年3月27日
- 更新了Swift 3.1。
- 添加了带有Generic Where子句的扩展部分,其中包含有关包含要求的扩展的信息。
- 添加了一个范围迭代到For-In Loops部分的示例。
- 向Failable Initializers部分添加了可用数字转换的示例。
- 向声明属性部分添加了有关将
available
属性与Swift语言版本一起使用的信息。 - 更新了“ 函数类型”部分中的讨论,以注意在编写函数类型时不允许使用参数标签。
- 现在,在条件编译块部分更新了对Swift语言版本号的讨论,现在允许使用可选的补丁号。
- 更新了“ 函数类型”部分中的讨论,现在Swift区分了采用多个参数的函数和采用元组类型的单个参数的函数。
- 从表达式章节中删除了动态类型表达式部分,现在这
type(of:)
是一个Swift标准库函数。
2016年10月27日
- 更新了Swift 3.0.1。
- 更新了“ 自动引用计数”一章中对弱引用和无引用引用的讨论。
- 添加了有关信息
unowned
,unowned(safe)
以及unowned(unsafe)
在声明修饰符的声明修饰语部分。 - 在Type Casting for Any和AnyObject部分添加了关于在
Any
期望type值时使用可选值的注释。 - 更新了“ 表达式”一章,以分隔对括号表达式和元组表达式的讨论。
2016年9月13日
- 更新了Swift 3.0。
- 更新了函数章节和函数声明部分中函数的讨论,注意默认情况下所有参数都获得参数标签。
- 在Advanced Operators章节中更新了对运算符的讨论,现在您将它们实现为类型方法而不是全局函数。
- 添加了有关信息
open
和fileprivate
访问级别修饰符的访问控制一章。 - 更新了
inout
“ 功能声明”部分中的讨论,注意它出现在参数类型的前面而不是参数名称的前面。 - 更新了对Escaping Closures和Autoclosures部分和属性章节中的属性
@noescape
和@autoclosure
属性的讨论,因为它们是类型属性,而不是声明属性。 - 添加了有关运算符优先级组信息的优先级自定义中缀运算符中的部分高级操作员章,并以优先级组宣言中的部分声明篇章。
- 整个更新的讨论使用macOS而不是OS X,
Error
而不是ErrorProtocol
和协议名称,ExpressibleByStringLiteral
而不是StringLiteralConvertible
。 - 更新在讨论WHERE子句通用的部分泛型的章节和通用参数和参数章,现在,通用
where
条款在声明的结尾写的。 - 更新了Escaping Closures部分中的讨论,现在默认情况下闭包是非脱节的。
- 更新的讨论在可选绑定一节的基础知识章和虽然声明中的部分陈述章,现在
if
,while
和guard
语句中使用的条件下不使用逗号分隔的列表where
条款。 - 添加了有关具有多个模式的开关情况下的信息交换的部分控制流章和switch语句中的部分陈述章。
- 由于函数参数标签不再是函数类型的一部分,因此更新了函数类型部分中函数类型的讨论。
- 更新协议组合物类型的讨论在协议组合的的部分协议章节和在协议组合类型的的部分类型章以使用新的语法。
Protocol1 & Protocol2
- 更新了“动态类型表达式”部分中的讨论,以使用动态类型表达式的新
type(of:)
语法。 - 更新了对行控制语句的讨论,以使用
#sourceLocation(file:line:)
“ 行控制语句”部分中的语法。 - 更新了“ 永不返回的函数”中的讨论以使用新
Never
类型。 - 向Literal Expression部分添加了有关游乐场文字的信息。
- 更新了In-Out Parameters部分中的讨论,注意只有非转义闭包才能捕获输入输出参数。
- 在“ 默认参数值”部分更新了有关默认参数的讨论,现在它们无法在函数调用中重新排序。
- 更新了属性参数以在“ 属性”一章中使用冒号。
- 添加了有关将重新抛出函数的catch块内的错误抛出到Rethrowing Functions and Methods部分的信息。
- 添加了有关访问Objective-C属性的getter或setter 选择器到Selector Expression部分的信息。
- 向Type Alias Declaration部分添加了有关泛型类别别名和在协议内使用类型别名的信息。
- 更新了“ 函数类型”部分中函数类型的讨论,注意参数类型周围的括号是必需的。
- 更新了属性章节需要注意的是
@IBAction
,@IBOutlet
和@NSManaged
属性意味着@objc
属性。 @GKInspectable
在“声明属性”部分中添加了有关该属性的信息。- 更新了“可选协议要求”部分中对可选协议要求的讨论,以阐明它们仅用于与Objective-C互操作的代码中。
- 删除了
let
在函数声明部分中明确使用函数参数的讨论。 - 现在该协议已从Swift标准库中删除,从语句章节中删除了对
Boolean
协议的讨论。 - 更正了“声明属性”部分中对
@NSApplicationMain
属性的讨论。
2016年3月21日
- 更新了Swift 2.2。
- 添加了有关如何根据用于条件编译块部分的Swift版本有条件地编译代码的信息。
- 添加了有关如何区分名称仅与Explicit Member Expression部分的参数名称不同的方法或初始值设定项的信息。
#selector
在“ 选择器表达式”部分添加了有关Objective-C选择器语法的信息。- 更新了关联类型的讨论,以
associatedtype
在关联类型和协议关联类型声明部分中使用关键字。 - 更新了有关
nil
在Failable Initializers部分中完全初始化实例之前返回的初始值设定项的信息。 - 添加了有关将元组与比较运算符部分进行比较的信息。
- 添加了有关将关键字用作关键字和标点符号部分的外部参数名称的信息。
- 更新了“声明属性”部分中对
@objc
属性的讨论,以指出枚举和枚举情况可以使用此属性。 - 通过讨论包含点的自定义运算符更新了“ 运算符”部分。
- 在Rethrowing Functions and Methods部分添加了一个注释,重新抛出函数不能直接抛出错误。
- 向Property Observers部分添加了一个注释,说明在将属性作为输入输出参数传递时调用的属性观察者。
- 在A Swift Tour章节中添加了有关错误处理的部分。
- 更新了“ 弱参考”部分中的数字,以更清楚地显示重新分配过程。
- 删除了对C风格
for
循环,++
前缀和后缀运算符以及--
前缀和后缀运算符的讨论。 - 删除了对变量函数参数的讨论以及curried函数的特殊语法。
2015年10月20日
- 更新了Swift 2.1。
- 更新了字符串插值和字符串字面现在该字符串插值可以包含字符串文字部分。
- 添加了Escaping Closures部分,其中包含有关该
@noescape
属性的信息。 - 使用有关tvOS的信息更新了声明属性和条件编译块部分。
- 向In-Out Parameters部分添加了有关in-out参数行为的信息。
- 向Capture Lists部分添加了有关如何捕获闭包捕获列表中指定的值的信息。
- 通过可选链接更新了“ 访问属性”部分,以阐明通过可选链接进行的分配的行为方式。
- 改进了Autoclosures部分中对自动爆破的讨论。
- 添加了一个将
??
操作符用于A Swift Tour章节的示例。
2015年9月16日
- 针对Swift 2.0进行了更新。
- 向错误处理章节,Do语句部分,Throw Statement部分,Defer Statement部分和Try Operator部分添加了有关错误处理的信息。
- 现在所有类型都符合协议,更新了“ 表示和投掷错误”部分
ErrorType
。 try?
向“ 将错误转换为可选值”部分添加了有关新关键字的信息。- 在“ 枚举”一章的“ 递归枚举”部分和“声明”一章中的“ 任意类型的枚举的枚举”部分中添加了有关递归枚举的信息。
- 将有关API可用性检查的信息添加到“ 控制流”一章的“ 检查API可用性”部分和“ 语句”一章的“ 可用性条件”部分。
- 添加了有关新的信息
guard
语句将提前退出的部分控制流章和卫队声明中的部分陈述章。 - 添加了有关协议扩展到信息协议扩展了部分协议的篇章。
- 向访问控制章节的“ 单元测试目标的访问级别”部分添加了有关单元测试的访问控制的信息。
- 将有关新可选模式的信息添加到Patterns章节的Optional Pattern部分。
- 更新了Repeat-While部分,其中包含有关
repeat
-while
循环的信息。 - 更新了字符串和字符章节,现在
String
不再符合CollectionType
Swift标准库中的协议。 print(_:separator:terminator)
在“ 打印常量和变量”部分添加了有关新Swift标准库函数的信息。- 在“ 枚举”一章
String
的“ 隐式分配的原始值”部分和“声明”一章的“ 包含原始值类型的案例的枚举”部分中添加了有关具有原始值的枚举个案行为的信息。 - 添加了有关
@autoclosure
属性(包括其@autoclosure(escaping)
形式)的信息到Autoclosures部分。 - 使用有关和属性的信息更新了“声明属性”部分。
@available
@warn_unused_result
- 使用有关属性的信息更新了“ 类型属性”部分
@convention
。 - 添加了一个使用带有
where
子句的多个可选绑定到Optional Binding部分的示例。 - 向String Literals部分添加了有关如何
+
在编译时使用运算符连接字符串文字的信息。 - 向元类型类型部分添加了有关比较元类型值并使用它们构造具有初始化表达式的实例的信息。
- 在“ 使用断言调试”部分添加了关于何时禁用用户定义断言的注释。
- 现在,可以将属性应用于某些实例方法,更新了“声明属性”部分中对
@NSManaged
属性的讨论。 - 更新了Variadic Parameters部分,现在可以在函数参数列表的任何位置声明可变参数。
- 向Overriding a Failable Initializer部分添加了有关如何通过强制解包超类初始值设定项的结果,将不可用的初始化程序委托给可用的初始化程序的信息。
- 添加了有关将枚举案例用作“任何类型的案例的枚举”部分的函数的信息。
- 添加了有关将初始化程序显式引用到Initializer Expression部分的信息。
- 将有关构建配置和行控制语句的信息添加到“ 编译器控制语句”部分。
- 在元类型类型部分添加了一个关于从元类型值构造类实例的注释。
- 在弱引用部分添加了一个关于弱引用不适合缓存的注释。
- 更新了“ 类型属性”部分中的注释,以提及存储的类型属性已延迟初始化。
- 更新了捕获值部分,以阐明如何在闭包中捕获变量和常量。
- 更新了“声明属性”部分,以描述何时可以将
@objc
属性应用于类。 - 在处理错误部分添加了关于执行
throw
语句性能的注释。do
在Do Statement部分添加了有关该语句的类似信息。 - 更新了“ 类型属性”部分,其中包含有关类,结构和枚举的存储和计算类型属性的信息。
- 使用有关标记的break语句的信息更新了Break Statement部分。
- 在更新后的一记地产观察家部分澄清的行为
willSet
和didSet
观察员。 - 在“ 访问级别”部分添加了一个注释,其中包含有关
private
访问范围的信息。 - 在Weak References部分添加了一个注释,说明垃圾收集系统和ARC之间弱引用的差异。
- 使用更精确的Unicode标量定义更新了“ 字符串文字”中的“ 特殊字符”。
2015-04-09
- 针对Swift 1.2进行了更新。
- Swift现在有一个本机
Set
集合类型。有关更多信息,请参阅集。 @autoclosure
现在是参数声明的属性,而不是其类型。还有一个新的@noescape
参数声明属性。有关更多信息,请参阅声明属性。- 类型方法和属性现在使用
static
关键字作为声明修饰符。欲了解更多信息,请参阅类型变量属性。 - 斯威夫特现在包括
as?
和as!
failable沮丧的运营商。有关更多信息,请参阅检查协议一致性。 - 添加了有关字符串索引的新指南部分。
- 从溢出运算符中删除溢出除法(
&/
)和溢出余数(&%
)运算符。 - 更新了常量和常量属性声明和初始化的规则。有关更多信息,请参阅常量声明。
- 更新了字符串文字中Unicode标量的定义。请参阅字符串文字中的特殊字符。
- 更新范围运算符以注意具有相同开始和结束索引的半开范围将为空。
- 更新的闭包是参考类型,以阐明变量的捕获规则。
- 更新值溢出以阐明有符号和无符号整数的溢出行为
- 更新协议声明以阐明协议声明范围和成员。
- 更新定义捕获列表以阐明闭包捕获列表中弱和无主引用的语法。
- 更新的运算符以明确提及自定义运算符支持的字符的示例,例如数学运算符,杂项符号和标志Unicode块中的字符。
- 现在可以声明常量而不在本地函数范围中初始化。首次使用前,它们必须具有设定值。有关更多信息,请参阅常量声明。
- 在初始化程序中,常量属性现在只能分配一次值。有关更多信息,请参阅初始化期间分配常量属性。
- 现在,多个可选绑定可以
if
作为逗号分隔的赋值表达式列表出现在单个语句中。有关更多信息,请参阅可选绑定。 - 一个可选的链式表达必须后缀表达式中出现。
- 协议强制转换不再局限于
@objc
协议。 - 现在可以在运行时失败的类型转换使用
as?
oras!
运算符,并且使用运算符键入保证不会失败的转换as
。有关更多信息,请参阅类型转换运算符。
2014年10月16日
- 更新了Swift 1.1。
- 添加了Failable Initializers的完整指南。
- 添加了协议的Failable Initializer要求的说明。
- 类型的常量和变量
Any
现在可以包含函数实例。更新了Type Casting for Any和AnyObject中的示例,以显示如何检查并转换为switch
语句中的函数类型。 - 具有原始值的枚举现在具有
rawValue
属性而不是toRaw()
方法,并且具有rawValue
参数而不是fromRaw()
方法的可用初始化程序。有关更多信息,请参阅具有原始值类型的案例的原始值和枚举。 - 添加了一个关于Failable Initializers的新参考部分,它可以触发初始化失败。
- 自定义运算符现在可以包含该
?
字符。更新了运算符参考以描述修订的规则。从Custom Operators中删除了有效运算符字符集的重复描述。
2014年8月18日
- 描述Swift 1.0的新文档,这是Apple用于构建iOS和OS X应用程序的新编程语言。
- 在协议中添加了有关初始化程序要求的新部分。
- 添加了有关仅使用类的协议的新部分。
- 断言和前置条件现在可以使用字符串插值。删除了相反的说明。
- 更新了“ 连接字符串和字符”部分,以反映这样的事实:值
String
和Character
值不能再与加法运算符(+
)或加法赋值运算符(+=
)组合。这些运算符现在仅用于String
值。使用String
type的append(_:)
方法将单个Character
值附加到字符串的末尾。 availability
在“声明属性”部分中添加了有关该属性的信息。- Optionals不再隐含地评估
true
它们何时具有值以及false
何时不具有值,以避免在使用可选Bool
值时出现混淆。相反,nil
使用==
或!=
运算符进行显式检查,以确定可选项是否包含值。 - Swift现在有一个Nil-Coalescing Operator(),如果它存在,它会解包一个可选的值,如果是可选的,则返回一个默认值。
a ?? b
nil
- 更新并扩展了“ 比较字符串”部分,以反映和演示字符串和字符比较以及前缀/后缀比较现在基于扩展字形集群的Unicode规范等效性。
- 您现在可以尝试设置属性的值,分配给下标,或通过Optional Chaining调用变异方法或运算符。有关通过可选链接访问属性的信息已相应更新,并且已扩展了通过可选链接调用方法检查方法调用成功的示例,以显示如何检查属性设置是否成功。
- 添加了有关通过可选链接访问可选类型的下标的新部分。
- 更新了“ 访问和修改阵列”部分,注意您不能再使用
+=
运算符将单个项目附加到数组。而是使用该append(_:)
方法,或者使用+=
运算符附加单项数组。 - 添加了一条说明该初始值
a
的范围运营商a...b
和a..<b
不得超过终值越大b
。 - 重写了继承章节,删除了对初始化程序覆盖的介绍性介绍。本章现在更多地关注在子类中添加新功能,以及使用覆盖修改现有功能。本章的Overriding Property Getters和Setters示例已被重写,以显示如何覆盖
description
属性。(在子类初始化程序中修改继承属性的默认值的示例已移至“ 初始化”一章。) - 更新了“ 初始化程序继承和覆盖”部分,注意现在必须使用
override
修饰符标记指定初始值设定项的覆盖。 - 更新了Required Initializers部分,注意
required
现在在所需初始化程序的每个子类实现之前编写修饰符,并且现在可以通过自动继承的初始化程序满足所需初始化程序的要求。 - 中缀运算符方法不再需要该
@infix
属性。 - 前缀和后缀运算符的
@prefix
和@postfix
属性已被和声明修饰符替换。prefix
postfix
- 添加了有关在该命令的说明前缀和后缀运算当两个前缀和后缀运算符应用于同一操作应用。
- 复合赋值运算符的运算符函数
@assignment
在定义函数时不再使用该属性。 - 定义自定义运算符时指定修饰符的顺序已更改。你现在写,而不是,例如。
prefix operator
operator prefix
- 添加了有关
dynamic
声明修饰符中的声明修饰符的信息。 - 添加了有关类型推断如何与Literals一起使用的信息。
- 添加了有关curried函数的更多信息。
- 添加了有关访问控制的新章节。
- 更新了字符串和字符章节,以反映Swift的
Character
类型现在代表单个Unicode扩展字形集群的事实。包括有关Extended Grapheme Clusters的新部分以及有关Unicode标量值和比较字符串的更多信息。 - 更新了“ 字符串文字”部分,注意字符串文字中的Unicode标量现在写为
\u{n}
,其中n
是0到10FFFF之间的十六进制数,即Unicode代码空间的范围。 - 该
NSString
length
属性现在映射到Swift的本机String
类型utf16Count
,而不是utf16count
。 - 斯威夫特的原生
String
类型将不再有一个uppercaseString
或lowercaseString
财产。已删除字符串和字符中的相应部分,并且已更新各种代码示例。 - 添加了有关没有参数标签的初始化参数的新部分。
- 添加了有关必需初始化程序的新部分。
- 添加了有关可选元组返回类型的新部分。
- 更新了“ 类型注释”部分,注意可以在一行中使用一种类型注释定义多个相关变量。
- 在
@optional
,@lazy
,@final
,和@required
属性现在是optional
,lazy
,final
,和required
的声明修饰语。 - 更新了整本书,将其
..<
称为半开放式操作员(而不是“半封闭式操作员”)。 - 更新了“ 访问和修改字典”部分以注意
Dictionary
现在具有布尔isEmpty
属性。 - 澄清了定义自定义运算符时可以使用的完整字符列表。
nil
和布尔人true
,false
现在是文学。- Swift的
Array
类型现在具有完整的值语义。更新了有关集合和数组可变性的信息,以反映新方法。还澄清了字符串数组和字典的赋值和复制行为。 - 数组类型速记语法现在编写为
[SomeType]
而不是SomeType[]
。 - 添加了一个关于字典类型速记语法的新部分,编写为。
[KeyType: ValueType]
- 添加了有关集类型的哈希值的新部分。
- Closure Expressions的示例现在使用全局
sorted(_:_:)
函数而不是全局sort(_:_:)
函数来反映新的数组值语义。 - 更新了有关结构类型的成员初始化程序的信息,以阐明即使结构的存储属性没有默认值,成员结构初始化程序也可用。
- 已更新为
..<
,而不是..
对半开区间操作。 - 添加了扩展通用类型的示例。