![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
IOS
ALLsharps
这个作者很懒,什么都没留下…
展开
-
Swift 运算符重载
运算符重载运算符重载允许你改变现在的作用在特定在的结构体和类上的已经存在的操作符的工作方式(译者注:可能有点乱)。这个不正是你想要的吗--改变+操作符作用在int数组上的方式。因为运算符重载是作用在playground的全局中的,所以新建一个playground,防止影响你原来写的例子。然后添加如下的代码到你的playground:12转载 2016-06-28 11:40:43 · 1302 阅读 · 0 评论 -
Swift 声明(Declarations)
一条声明(declaration)可以在程序里引入新的名字或者构造。举例来说,可以使用声明来引入函数和方法,变量和常量,或者来定义新的命名好的枚举,结构,类和协议类型。可以使用一条声明来延长一个已经存在的命名好的类型的行为。或者在程序里引入在其它地方声明的符号。在Swift中,大多数声明在某种意义上讲也是执行或同时声明它们的初始化定义。这意味着,因为协议和它们的成员不匹配,大多数协议成员需要单转载 2016-06-27 21:48:18 · 1100 阅读 · 0 评论 -
Swift 语句(Statements)
在 Swift 中,有两种类型的语句:简单语句和控制流语句。简单语句是最常见的,用于构造表达式或者声明。控制流语句则用于控制程序执行的流程,Swift 中有三种类型的控制流语句:循环语句、分支语句和控制传递语句。循环语句用于重复执行代码块;分支语句用于执行满足特定条件的代码块;控制传递语句则用于修改代码的执行顺序。在稍后的叙述中,将会详细地介绍每一种类型的控制流语句。是否将分号(;)添加到转载 2016-06-27 21:47:50 · 556 阅读 · 0 评论 -
Swift 表达式(Expressions)
Swift 中存在四种表达式: 前缀(prefix)表达式,二元(binary)表达式,主要(primary)表达式和后缀(postfix)表达式。表达式可以返回一个值,以及运行某些逻辑(causes a side effect)。前缀表达式和二元表达式就是对某些表达式使用各种运算符(operators)。 主要表达式是最短小的表达式,它提供了获取(变量的)值的一种途径。 后缀表达式则允许你建转载 2016-06-27 21:47:20 · 824 阅读 · 0 评论 -
Swift c关于语言参考(About the Language Reference)
本书的这一节描述了Swift编程语言的形式语法。这里描述的语法是为了帮助您更详细的了解该语言,而不是让您直接实现一个解析器或编译器。Swift语言相对小一点,这是由于在Swift代码中几乎所有常见的类型、函数以及运算符都已经在Swift标准库中定义了。虽然这些类型、函数和运算符并不是Swift语言自身的一部分,但是它们被广泛应用于本书的讨论和代码范例中。如何阅读语法用来描述Swif转载 2016-06-27 21:46:47 · 692 阅读 · 0 评论 -
Swift 高级运算符(Advanced Operators)
除了在之前介绍过的基本运算符,Swift 中还有许多可以对数值进行复杂操作的高级运算符。这些高级运算符包含了在 C 和 Objective-C 中已经被大家所熟知的位运算符和移位运算符。与C语言中的算术运算符不同,Swift 中的算术运算符默认是不会溢出的。所有溢出行为都会被捕获并报告为错误。如果想让系统允许溢出行为,可以选择使用 Swift 中另一套默认支持溢出的运算符,比如溢出加法运算符(转载 2016-06-27 21:44:26 · 604 阅读 · 0 评论 -
Swift 访问控制(Access Control)
访问控制可以限定其他源文件或模块中代码对你代码的访问级别。这个特性可以让我们隐藏功能实现的一些细节,并且可以明确的申明我们提供给其他人的接口中哪些部分是他们可以访问和使用的。你可以明确地给单个类型(类、结构体、枚举)设置访问级别,也可以给这些类型的属性、函数、初始化方法、基本类型、下标索引等设置访问级别。协议也可以被限定在一定的范围内使用,包括协议里的全局常量、变量和函数。在提供了不同访问转载 2016-06-27 21:43:39 · 913 阅读 · 0 评论 -
Swift 泛型(Generics)
泛型代码可以让你写出根据自我需求定义、适用于任何类型的,灵活且可重用的函数和类型。它的可以让你避免重复的代码,用一种清晰和抽象的方式来表达代码的意图。泛型是 Swift 强大特征中的其中一个,许多 Swift 标准库是通过泛型代码构建出来的。事实上,泛型的使用贯穿了整本语言手册,只是你没有发现而已。例如,Swift 的数组和字典类型都是泛型集。你可以创建一个Int数组,也可创建一个String转载 2016-06-27 21:43:06 · 457 阅读 · 0 评论 -
Swift 协议(Protocols)
协议定义了一个蓝图,规定了用来实现某一特定工作或者功能所必需的方法和属性。类,结构体或枚举类型都可以遵循协议,并提供具体实现来完成协议定义的方法和功能。任意能够满足协议要求的类型被称为遵循(conform)这个协议。协议的语法协议的定义方式与类,结构体,枚举的定义非常相似。protocol SomeProtocol { // 协议内容}要使类遵循某个协议,需要在类型转载 2016-06-27 21:42:12 · 649 阅读 · 0 评论 -
Swift 特性(Attributes)
特性提供了关于声明和类型的更多信息。在Swift中有两类特性,用于修饰声明的以及用于修饰类型的。通过以下方式指定一个特性:符号@后面跟特性名,如果包含参数,则把参数带上:@attribute name@attribute name(attribute arguments)有些声明特性通过接收参数来指定特性的更多信息以及它是如何修饰一个特定的声明的。这些特性的参数写在小括号内转载 2016-06-27 21:48:45 · 2449 阅读 · 0 评论 -
Swift 模式(Patterns)
模式(pattern)代表了单个值或者复合值的结构。例如,元组(1, 2)的结构是逗号分隔的,包含两个元素的列表。因为模式代表一种值的结构,而不是特定的某个值,你可以把模式和各种同类型的值匹配起来。比如,(x, y)可以匹配元组(1, 2),以及任何含两个元素的元组。除了将模式与一个值匹配外,你可以从复合值中提取出部分或全部,然后分别把各个部分和一个常量或变量绑定起来。swift语言中模式有2转载 2016-06-27 21:49:14 · 666 阅读 · 0 评论 -
Swift 可选类型完美解决占位问题
可选类型是Swift中新引入的,功能很强大。在这篇博文里讨论的,是在Swift里,如何通过可选类型来保证强类型的安全性。作为例子,我们来创建一个Objective-C API的Swift版本,但实际上Swift本身并不需要这样的API。为Dictionary增加objectsForKeys函数在Objective-C中,NSDictionary有一个方法-objectsForKey转载 2016-06-27 21:53:35 · 1267 阅读 · 0 评论 -
访问控制和protected
原文再续,书折第一回。很多其他编程语言都有一种”protected“设定,可以限制某些类方法只能被它的子类所使用。Swift支持了访问控制后,大家给我们的反馈都很不错。而有的开发者问我们:“为什么Swift没有类似protected的选项?”当我们在设计Swift访问控制的不同等级时,我们认为有两种主要场景:在一个APP里:隐藏某个类的私密细节。在一个开源框架里:不让导入这个框转载 2016-06-27 21:53:01 · 585 阅读 · 0 评论 -
Swift里的值类型与引用类型
Swift里面的类型分为两种:值类型(Value Types):每个实例都保留了一分独有的数据拷贝,一般以结构体 (struct)、枚举(enum) 或者元组(tuple)的形式出现。引用类型(Reference Type):每个实例共享同一份数据来源,一般以类(class)的形式出现。在这篇博文里面,我们会介绍两种类型各自的优点,以及应该怎么选择使用。值类型与引用类型的区转载 2016-06-27 21:52:35 · 602 阅读 · 0 评论 -
Swift Swift与C语言指针友好合作
Objective-C和C的API常常会需要用到指针。Swift中的数据类型都原生支持基于指针的Cocoa API,不仅如此,Swift会自动处理部分最常用的将指针作为参数传递的情况。这篇文章中,我们将着眼于在Swift中让C语言指针与变量、数组和字符串共同工作。用以输入/输出的参数指针C和Objective-C并不支持多返回值,所以Cocoa API中常常将指针作为一种在方法间传递额转载 2016-06-27 21:52:13 · 559 阅读 · 0 评论 -
Swift 造个类型不是梦-白话Swift类型创建
小伙伴们,Swift中的Bool类型有着非常重要的语法功能,并支撑起了整个Swift体系中的逻辑判断体系,经过老码的研究和学习, Bool类型本身其实是对基础Boolean类型封装,小伙伴们可能咬着手指头问老码,怎么一会Bool类型,一会Boolean类型,其区别在于,前者是基于枚举的组合类型,而后者则是基本类型,只有两种true和false。自定义原型接下老码根据Bool的思想来创建转载 2016-06-27 21:51:38 · 359 阅读 · 0 评论 -
Swift Access Control 权限控制的黑与白
如果您之前没有接触过权限控制,先来听一个小故事:小明是五道口工业学院的一个大一新生,最近他有点烦恼,因为同屋经常用他的热水壶,好像那是自己家的一样,可是碍于同学情面,又不好意思说。直到有一天,他和学姐小K吐槽。学姐听了之后,说:大学集体生活里面,大部分东西都是默认室友可以共用的。如果你不想别人拿,我可以帮你做封印,只要打上private标记,它们就看不到你的东西,更加用不了你的东西了。转载 2016-06-27 21:50:59 · 432 阅读 · 0 评论 -
语法总结(Summary of the Grammar)
语句语句语法语句 → 表达式 ; 可选语句 → 声明 ; 可选语句 → 循环语句 ; 可选语句 → 分支语句 ; 可选语句 → 标记语句(Labeled Statement)语句 → 控制转移语句 ; 可选语句 → 延迟语句 ; 可选语句 → 执行语句 ; 可选多条语句(Statements) → 语句 多条语句(Statements) 可选转载 2016-06-27 21:50:14 · 797 阅读 · 0 评论 -
Swift 泛型参数(Generic Parameters and Arguments)
本节涉及泛型类型、泛型函数以及泛型初始化器(initializer)的参数,包括形参和实参。声明泛型类型、函数或初始化器时,须指定相应的类型参数。类型参数相当于一个占位符,当实例化泛型类型、调用泛型函数或泛型初始化器时,就用具体的类型实参替代之。关于 Swift 语言的泛型概述,见泛型(第二部分第23章)。泛型形参子句泛型形参子句指定泛型类型或函数的类型形参,以及这些参数的关联约束转载 2016-06-27 21:49:39 · 758 阅读 · 0 评论 -
Swift 扩展(Extensions)
扩展就是向一个已有的类、结构体、枚举类型或者协议类型添加新功能(functionality)。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即逆向建模)。扩展和 Objective-C 中的分类(categories)类似。(不过与 Objective-C 不同的是,Swift 的扩展没有名字。)Swift 中的扩展可以:添加计算型属性和计算型静态属性定义实例方法和类型方法提供转载 2016-06-27 21:41:10 · 493 阅读 · 0 评论 -
Swift 嵌套类型(Nested Types)
枚举类型常被用于实现特定类或结构体的功能。也能够在有多种变量类型的环境中,方便地定义通用类或结构体来使用,为了实现这种功能,Swift允许你定义嵌套类型,可以在枚举类型、类和结构体中定义支持嵌套的类型。要在一个类型中嵌套另一个类型,将需要嵌套的类型的定义写在被嵌套类型的区域{}内,而且可以根据需要定义多级嵌套。嵌套类型实例下面这个例子定义了一个结构体BlackjackCard(二十转载 2016-06-27 21:39:56 · 595 阅读 · 0 评论 -
Swift 类型转换(Type Casting)
类型转换可以判断实例的类型,也可以将实例看做是其父类或者子类的实例。类型转换在 Swift 中使用 is 和 as 操作符实现。这两个操作符提供了一种简单达意的方式去检查值的类型或者转换它的类型。你也可以用它来检查一个类是否实现了某个协议,就像在 检验协议的一致性部分讲述的一样。定义一个类层次作为例子你可以将类型转换用在类和子类的层次结构上,检查特定类实例的类型并且转换这个转载 2016-06-26 22:06:13 · 759 阅读 · 0 评论 -
Swift 枚举(Enumerations)
枚举定义了一个通用类型的一组相关值,使你可以在你的代码中以一种安全的方式来使用这些值。如果你熟悉 C 语言,你就会知道,在 C 语言中枚举将枚举名和一个整型值相对应。Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值。如果给枚举成员提供一个值(称为“原始”值),则该值的类型可以是字符串,字符,或是一个整型值或浮点数。此外,枚举成员可以指定任何类型的相关值存储到枚举成员值中,就像其转载 2016-06-26 21:58:56 · 484 阅读 · 0 评论 -
Swift 闭包(Closures)
闭包是自包含的函数代码块,可以在代码中被传递和使用。 Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的 lambdas 函数比较相似。闭包可以捕获和存储其所在上下文中任意常量和变量的引用。 这就是所谓的闭合并包裹着这些常量和变量,俗称闭包。Swift 会为您管理在捕获过程中涉及到的所有内存操作。注意: 如果您不熟悉捕获(capt转载 2016-06-26 21:58:13 · 467 阅读 · 0 评论 -
Swift 函数(Functions)
函数是用来完成特定任务的独立的代码块。你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被“调用”。Swift 统一的函数语法足够灵活,可以用来表示任何函数,包括从最简单的没有参数名字的 C 风格函数,到复杂的带局部和外部参数名的 Objective-C 风格函数。参数可以提供默认值,以简化函数调用。参数也可以既当做传入参数,也当做传出参数,也就是说,一旦函转载 2016-06-26 21:57:36 · 418 阅读 · 0 评论 -
Swift 控制流(Control Flow)
Swift提供了类似 C 语言的流程控制结构,包括可以多次执行任务的for和while循环,基于特定条件选择执行不同代码分支的if、guard和switch语句,还有控制流程跳转到其他代码的break和continue语句。除了 C 语言里面传统的 for 循环,Swift 还增加了for-in循环,用来更简单地遍历数组(array),字典(dictionary),区间(range),字符串(转载 2016-06-26 21:56:53 · 646 阅读 · 1 评论 -
Swift 集合类型 (Collection Types)
Swift 语言提供Arrays、Sets和Dictionaries三种基本的集合类型用来存储集合数据。数组是有序数据的集。集合是无序无重复数据的集。字典是无序的键值对的集。Swift 语言中的Arrays、Sets和Dictionaries中存储的数据值类型必须明确。这意味着我们不能把不正确的数据类型插入其中。同时这也说明我们完全可以对取回值的类型非常自信。注意: Swift 的转载 2016-06-26 21:55:49 · 507 阅读 · 0 评论 -
Swift 字符串和字符(Strings and Characters)
String是例如"hello, world","albatross"这样的有序的Character(字符)类型的值的集合,通过String类型来表示。 Swift 的String和Character类型提供了一个快速的,兼容 Unicode 的方式来处理代码中的文本。 创建和操作字符串的语法与 C 语言中字符串操作相似,轻量并且易读。 字符串连接操作只需要简单地通过+符号将两个字符串相连即可转载 2016-06-26 21:54:04 · 2912 阅读 · 0 评论 -
基本运算符(Basic Operators)
运算符是检查、改变、合并值的特殊符号或短语。例如,加号+将两个数相加(如let i = 1 + 2)。更复杂的运算例子包括逻辑与运算符&&(如if enteredDoorCode && passedRetinaScan),或让 i 值加1的便捷自增运算符++i等。Swift 支持大部分标准 C 语言的运算符,且改进许多特性来减少常规编码错误。如:赋值符(=)不返回值,以防止把想要判断相等运算符转载 2016-06-26 21:50:41 · 1242 阅读 · 0 评论 -
基础部分(The Basics)
Swift 是一门开发 iOS, OS X 和 watchOS 应用的新语言。然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的。Swift 包含了 C 和 Objective-C 上所有基础数据类型,Int表示整型值;Double和Float表示浮点型值;Bool是布尔型值;String是文本型数据。Swift 还提供了三个基本的集合转载 2016-06-26 21:41:00 · 319 阅读 · 0 评论 -
Swift 类和结构体(Classes and Structures)
类和结构体是人们构建代码所用的一种通用且灵活的构造体。我们可以使用完全相同的语法规则来为类和结构体定义属性(常量、变量)和添加方法,从而扩展类和结构体的功能。与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件。你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口。注意: 通常一个类的实例被称为对象。然而在Swi转载 2016-06-26 21:59:27 · 401 阅读 · 0 评论 -
属性 (Properties)
属性将值跟特定的类、结构或枚举关联。存储属性存储常量或变量作为实例的一部分,而计算属性计算(不是存储)一个值。计算属性可以用于类、结构体和枚举,存储属性只能用于类和结构体。存储属性和计算属性通常与特定类型的实例关联。但是,属性也可以直接作用于类型本身,这种属性称为类型属性。另外,还可以定义属性观察器来监控属性值的变化,以此来触发一个自定义的操作。属性观察器可以添加到自己定义的存储属性上,也转载 2016-06-26 22:00:02 · 882 阅读 · 0 评论 -
Swift 错误处理(Error Handling)
错误处理是响应错误以及从错误中返回的过程。swift提供第一类错误支持,包括在运行时抛出,捕获,传送和控制可回收错误。一些函数和方法不能总保证能够执行所有代码或产生有用的输出。可空类型用来表示值可能为空,但是当函数执行失败的事后,可空通常可以用来确定执行失败的原因,因此代码可以正确地响应失败。在Swift中,这叫做抛出函数或者抛出方法。举个例子,考虑到一个从磁盘上的一个文件读取以及处理数据转载 2016-06-26 22:05:51 · 934 阅读 · 0 评论 -
Swift 可空链式调用(Optional Chaining)
可空链式调用(Optional Chaining)是一种可以请求和调用属性、方法及下标的过程,它的可空性体现于请求或调用的目标当前可能为空(nil)。如果可空的目标有值,那么调用就会成功;如果选择的目标为空(nil),那么这种调用将返回空(nil)。多个连续的调用可以被链接在一起形成一个调用链,如果其中任何一个节点为空(nil)将导致整个链调用失败。> 注意: Swift 的可空链式调用和 O转载 2016-06-26 22:05:14 · 656 阅读 · 0 评论 -
Swift 自动引用计数(Automatic Reference Counting)
Swift 使用自动引用计数(ARC)机制来跟踪和管理你的应用程序的内存。通常情况下,Swift 的内存管理机制会一直起着作用,你无须自己来考虑内存的管理。ARC 会在类的实例不再被使用时,自动释放其占用的内存。然而,在少数情况下,ARC 为了能帮助你管理内存,需要更多的关于你的代码之间关系的信息。本章描述了这些情况,并且为你示范怎样启用 ARC 来管理你的应用程序的内存。注意:引转载 2016-06-26 22:04:27 · 556 阅读 · 0 评论 -
Swift 析构过程(Deinitialization)
析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字deinit来标示,类似于构造器要用init来标示。析构过程原理Swift 会自动释放不再需要的实例以释放资源。如自动引用计数章节中所讲述,Swift 通过自动引用计数(ARC)处理实例的内存管理。通常当你的实例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理。例如,如果转载 2016-06-26 22:03:42 · 550 阅读 · 0 评论 -
Swift 构造过程(Initialization)
构造过程是为了使用某个类、结构体或枚举类型的实例而进行的准备过程。这个过程包含了为实例中的每个存储型属性设置初始值和为其执行必要的准备和初始化任务。构造过程是通过定义构造器(Initializers)来实现的,这些构造器可以看做是用来创建特定类型实例的特殊方法。与 Objective-C 中的构造器不同,Swift 的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化。转载 2016-06-26 22:03:13 · 1745 阅读 · 0 评论 -
Swift 继承(Inheritance)
一个类可以继承(inherit)另一个类的方法(methods),属性(properties)和其它特性。当一个类继承其它类时,继承类叫子类(subclass),被继承类叫超类(或父类,superclass)。在 Swift 中,继承是区分「类」与其它类型的一个基本特征。在 Swift 中,类可以调用和访问超类的方法,属性和下标脚本(subscripts),并且可以重写(override)这些转载 2016-06-26 22:02:43 · 479 阅读 · 0 评论 -
Swift 下标脚本(Subscripts)
下标脚本 可以定义在类(Class)、结构体(structure)和枚举(enumeration)这些目标中,可以认为是访问集合(collection),列表(list)或序列(sequence的快捷方式,使用下标脚本的索引设置和获取值,不需要再调用实例的特定的赋值和访问方法。举例来说,用下标脚本访问一个数组(Array)实例中的元素可以这样写 someArray[index] ,访问字典(Dic转载 2016-06-26 22:02:08 · 476 阅读 · 0 评论 -
Swift 方法(Methods)
方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法;实例方法为给定类型的实例封装了具体的任务与功能。类、结构体、枚举也可以定义类型方法;类型方法与类型本身相关联。类型方法与 Objective-C 中的类方法(class methods)相似。结构体和枚举能够定义方法是 Swift 与 C/Objective-C 的主要区别之一。在 Objective-C 中,类是唯一能定义转载 2016-06-26 22:00:52 · 376 阅读 · 0 评论