疯狂Swift讲义(第2版)试读样章
基于Swift 2.1版本,选择OS X 10.11平台,采用Xcode 7.1作为开发工具写成本书前言正逐步占领实际开发的市场份额,的简洁、易用性已经吸引了大量开发者,人家已开始或准备开始使用开发上再次发布了版本,既向开发者宣示了对的支持决心,也进一步增强了的功能,使得真正成为一门强大的开发语言的最大特点是简洁,它从等现代语言中学习了不少内容,从而让具有非常简洁的编程体验,十分接近程序员的习惯。而且能很好地兼容已有的框架和库,因此与完全可以进行混合编程。此外语言还有已经十分成熟的框架的支持,更加可靠!需要说明的是,虽然提供了简洁的语法,但的功能并不简单,绝对是一门具有工业品质的强大语言。既支持函数式的编程方式,也支持面向对象的编程方式。的函数式编程方式完仝支持主流的函数和闭包,传参方式既支持值传递方式,也支持引用传递方式,还支持多返回值的函数,语法功能非常丰富;在面向对象的支持方面,完全支持面向对象的封装、继承、多态等基木功能,而且提供了枚举、结构体和类三种面向对象的类型,这三种类型都可创建实例、调用方法,而且都允许定乂属性、方法、构造器、卜标和嵌套类型,语法功能非常丰富。如果真正全面掌握了的所有功能,就会发现虽然是一门简洁的编程语言,但它也是一门功能非常强大的语言本书是《疯狂讲义》的第版,真正基于平台,米用作为开发工具。与相比变化非常大:简单的改变如抛弃了原有的 println输出函数,改为使用 print输岀函数, String不再遵守 CollectionType协议等;重大的更新包括 repeat while循环、 guard语句、AP检查、条件编译、Set集合、错误处理机制、协议扩展等内容。这些内容都是本书重点介绍的知识。最后本书提醒读者,虽然是一门简洁、优雅的编程语言,但它绝非一门简单的语言。因此希望广大开发者在开始学习之前做好心理准备:是一门功能强大的工业语言,因此它的语法功能非常丰富。本书作为“疯狂体系”学习图书,当然不是仅提供浅尝辄止的入门语法,而是真正全面、细致地介绍了语言的各和功能,完整覆盖了官方的“”编稈指南,而且人部分语法功能都从正反两面举例,务求让读者能举一反三地真正掌握编稈。本书有什么特点正如前面所介绍的,本书并不是一本简单的门教材,而是一本全面而完整的编程手册,不仅完整覆盖了官方的“编程指南,而且示例更加丰富,行文更加通俗易懂,更符合中国人的学习习惯。这一点,一直都是“疯狂体系”图书的风格本书内容人致可分为部分:第1部分:由第章组成,这部分简要介绍了语言的相关背景,主要介绍∫如何搭建的开发环境,包括的功能和用法,重点介绍了如何在终端窗口编译、运行程序第2部分∶由第章组成,主要介绍了的基础语法和函数式编程支持,也介绍的等内置类型。第3部分:由第章组成,主要介绍了的面向对象编程支持,并介绍了使用调用框架的常用类。第4部分:由第章组成,⊥要介绍了如何使用开发应用,详细介绍了项目的结构,并归纳了应用的设计,在代码中获取控件的两种方式(必须先获取控件,然后即可修改它来更新用户界面),应用事件处理的三种方式。通过这种方式可以让读者快速掌握编程的思路。第章还介绍了一个游戏:俄罗斯方块,本书不是一本看完之后可以“吹嘘、炫耀”的书——因为本书并没有堆砌一堆“深奥”的新名词、一堆“高深”的思想;本书保持了“疯狂体系”的一贯风格:操作步骤详细、编稈思路清晰、语言平实。只要读者想学习编程,虽不像网络流传的那么简单,但只婓认真阅读此书,并准备动手“敲代码”,完全可以真正掌握它。无须担心没有编程基础(本书从最基础的定义变量开始讲起),也无须担心没有电脑(网络上使用普通电脑装黑苹果的文章铺天盖地)——只要你有决心和毅力,就可以真正掌握编程,进而掌握应用开发不管怎样,只要读者在阅读本书时遇到知识上的问题,都可以登录疯狂联盟)与广大学习者交流,笔者也会通过该平台与大家一起交流、学习。本书还具有如下三个特点版本成熟,语法稳定本书并非基于测试版写成,而是以为平台,基于开发工具,采用稳定的正式版写成,因此读者阅读此书时极少会发现书中知识已经过时或被抛弃的情形。知识全面,覆盖面广本书不像某些入门级的小册子看上去那么简单,本书全血而细致地介绍了绵程的各种语法,不仅完整覆盖官方的“”编程指南,而且示例更加丰富。注释详细,轻松上手为了降低读者阅读的难度,书中代码的注释非常详细,几乎每两行代码就有一行注释。不仅如此,本书甚至还把一些简单理论作为注释穿插到代码中,力求让读者能轻松上手本书所有程序中的关键代码均以粗体字标出,也是为了帮助读者能迅速找到这些程序的关键点本书程序清单请见本书写给谁看夲书为所有打算深入掌握编程的读者而编写,适合各个层次的学习者和开发者阅读,也适合作为大学教育、培训机构的教材。年月日(目录( CONTENTS第1章Swif语詈与开发环境.可选类语言简介可选和语言强制解析关于的几个误解可选绑定搭建开发环境隐式可选类型下载和安装类型别名安装辅助工具和文档字符和字符串第一个程序字符类型程序入口字符串类型使用工具字符串的可变性开发项目字符串的基本操作使用终端窗口编译、运行程序字符串比较使用编译程序获取字符串中字符的使用交互命合编码熟悉本章小结创建项目第3章运算符和表达式熟悉导航面板赋值运算符熟悉检查器面板算术运算符熟悉库面板溢出运算符使用的帮助系统值的上溢本章小结值的下溢第2章Swit的基本数据类型位运算符25注释扩展后的赋值运算符变量与常量范围运算符分隔符闭范围运算符标识符规则半开范围运算符的关键字比较运算符声明变量和常量逻辑运算符输出变量和常量的个逻辑运算符整型组合逻辑与括号浮点型目运算符数值型之间的类型转换合运算符整型之间的转换运算符的结合性和优先级浮点型与整型之间的转换本章小结型第4章流程控制.68元组()类型顺序结构定义元组类型的变量分支结构获取元组中的元素值条件语句为元组中的元素命名分支语句不存在隐式贯穿字典的应用举例)和显式贯穿集合的复制使用结束数组与的复制的范围匹配字典的复制的元组匹配本章小结的值绑定第6章函数和闭包118的子句函数入门循环结构定义和调用函数循环语句函数返回值循环语句递归函数循环函数的形参循环外部形参名嵌套循环形参默认值控制循坏结构使用结束循环个数可变的形参常量形参和变量形参使用忽略本次循环的形参剩下语句函数类型使用结束方法使用函数类型新增的使用凼数类型作为形参类型新增的检查使用函数类型作为返回值条件编译类型本章小结函数重载第5章集合91嵌套函数组嵌套函数与闭包声明和创建数组回顾嵌套函数使用数组使用闭包表达式代替嵌套使用逼历数组函数数组的可变性和数组的修改闭包的多维数组闭包表达式数组的应用举例调用闭包(使用闭包返回值)集合利用上下文推断类型声明和创建省略使用省略形参名使用逼历尾随闭包的可变性和的修改捕获上下文屮的变量和常量集合元素与闭包是引用类型支持的集合运算自动闭包集合的关系运算木章小结字典147声明和创建字典第7章面向对象编程(上)使用字典的面向对象支持面向对象概述使用這历字典的面向对象类型单独使用字典的或字典的可变性和字典的修改枚举定义枚半枚举值和语句将错误转为可选值原始值使错误失效关联值使用回收资源递归枚举构造器类和结构体类和结构体的构造器定义结构体和类构造器的外部形参名创建实例使用闭包或酾数为属性设置值类型与引用类型初始值引用类型的比较值类型的构造器重载关键字可能失败的构造器类和结构体的选择结构体与可能失败的构造器存储属性枚举与可能失败的构造器实例存储属性与实例变量本章小结结构体常量与实例属性第8章面向对象编程(下209延迟存储属性计算属性继承继承的特点定义计算属性重写父类的方法部分的简化重写父类的属性只读的计算属性重写属性观察者属性观察者重写父类的下标方法使用防止重写方法的所属性将方法转换为函数类的构造与析构类的指定构造器和便利方法的外部形参名构造器方法的命名习惯类的构造器链值类型的可变方法两段式构造属性和方法的统构造器的继承和重写下标类与可能失败的构造器下标的基本用法可能失败的构造器的传播下标重载重写可能失败的构造器可选链子类必须包含的构造器使用可选链代替强制解析析构器使用可选链调用方法多态使用可选链调用下标多态性类型属性和类型方法使用运算符检查类型类型成员的修饰符使用运算符向下转型值类型的类型属性和类的类型属性嵌套类型值类型的类型方法扩展类的类型方法使用扩展添加属性错误处理使用扩展添加方法抛出错误使用扩展添加可变方法声明抛出错误使用扩展添加构造器使用捕捉错误使用扩展添加下标使用扩展添加嵌套类型泛型函数协议定义泛型函数规范、接口与协议语法定义多个类型参数协议指定的属性要求泛型类型协议指定的方法要求定义泛型类型协议指定的可变方法要求从泛型类派生子类协议指定的下标要求扩展泛型类型协议指定的构造器要求类型约東使用协议作为类型关联类型合成协议使用关联类型通过扩展为已有的类型添加扩展已有类型来确定关联协议类型唯类()协议子可选协议泛型声明的子句协议扩展协议扩展的子句输出实例和本章小结299协议第10章运算符函数300使用自定义类型作为字典运算符重载前置和后置运算符隐臧与封装扩展后的赋值运算符理解封装比较运算符访问控制符自定义运算符访问控制语法开发自定义运算符使用访问权限定义类型自定义运算符的结合性和子类的访问权限优先级常量、变量、属性、下标的本章小结访问权限构造器的访问权限第11章 Foundation框架详解310协议的访问权限包装类扩展的访问权限它们不是包装类类型别名的访问权限和内存管理字符串(与理解自动引用计数(强引用循环的常用功能使用弱引用解决强引用循环可变字符串使用无主引用解决强引用循环日期与时间闭包与对象的强引用循环期与时间(使用弱引用或无主引用解日期格式器决闭包的强引用循环面向对象语法总结日历()与日期本章小结组件(数组(第9章泛型285的功能与用法泛型的作用对集合元素整体调用方法进行排序使用枚举器逼历程序获取控件的两种方式集合元素事件处理的种方式可变数组代码控制界面不使用界面设计文件开发集合(界面的功能与用法使用代码创建界面的功能与用法自定义控件的功能与用法本章小结有序集合与)第13章 Objectiⅳe-C与Swif混编375字典(与调用创建项目添加类的功能与用法的进行调用类对排序调用的进行项目添加过滤类调用类的功能与用法本章小结本章小结第14章俄罗斯方块.385第12章使用Swft开发iOS应用340俄罗斯方块简介从项目开始开发游戏界面项目包舍的文件界面布局设计简介开发游戏界面控件添加控件俄罗斯方玦的数据模型修改控件属性定义数据模型支持的属性初始化游戏状态数据支持的属性实现游戏逻辑处理方块掉落程序人口和应用程序代理处理方块左移理解的处理方块右移掌握处理方块旋转控制器启动游戏事件机制本章小结