Swift与Cocoa框架开发
读者评价
目前将swift的新书不多,这本是讲得比较全面清楚的。
如果你之前没有学过cocoa,没学过obj-c,直接想从swift开始学cocoa,那这本书是不二选择。但是这里头写的简直只能给人随便翻一翻看,作为初学入门教材还可以,细看完全不能当成工具书来翻阅。
首先是错误太多了,所有所有的函数第一参数全部被当成了函数名来翻译,实在搞不懂这书怎么校对过的? 例如makeViewWithIdentifier(id, owner: self) 这完全是obj-c的残留写法,swift里函数名和参数都是独立的makeView(withIdentifier: id, owner: self)。原版难道也是这样直接从obj-c那本cocoa教程复制粘贴过来的么?
其次操作写的太过于简陋,对初学者非常不友好,xcode上需要用UI界面去操作的很繁琐的步骤都只写了一句话就带过去了,并且没有说明这么做的原因。仅仅作为实验操作手册还是可以的,但是作为一本入门书籍,或者是工具书,就太过于死板
内容介绍
《Swift与Cocoa框架开发》系统讲解了在Mac OS X和iOS 8平台上,使用苹果公司的Swift语言开发Mac、iPhone和iPad应用的基本概念和编程技巧。主要围绕使用Swift语言进行Cocoa框架开发,突出OS X和iOS开发的差异,教会读者利用高级Cocoa和Cocoa Touch特性开发真实的应用。具体说来,前面几章介绍了一般性主题,比如设置开发环境以及Swift语言的语法和功能,后面各章介绍了Cocoa和Cocoa Touch的具体功能。此外,几乎每一章都包含了一些可以遵照执行的实践练习。
本书适合各层次Mac OS X和iOS 8应用开发人员阅读。
目录
- 前言 XIII
- 第1 章 Cocoa 开发工具 1
- 1.1 Mac 和iOS 开发者计划 1
- 1.1.1 注册开发者计划 2
- 1.1.2 下载Xcode 3
- 1.2 用Xcode 创建自己的第一个项目 4
- 1.3 开发一个简单的Swift 应用程序 11
- 1.3.1 设计界面 11
- 1.3.2 连接代码 13
- 1.4 使用iOS 模拟器 14
- 1.5 用TestFlight 测试iOS App 16
- 第2 章 用Swift 设计程序 17
- 2.1 Swift 程序设计语言 17
- 2.2 playground 19
- 2.3 变量和常量 20
- 2.4 类型 21
- 2.4.1 元组 23
- 2.4.2 数组 23
- 2.4.3 字典 25
- 2.5 控制流 25
- 2.6 函数与闭包 29
- 2.6.1 将函数用作变量 32
- 2.6.2 闭包 34
- 2.7 对象 35
- 2.7.1 继承 36
- 2.7.2 初始化与反初始化 37
- 2.7.3 属性 38
- 2.7.4 协议 40
- 2.7.5 扩展 41
- 2.7.6 访问控制 43
- 2.7.7 运算符 44
- 2.7.8 泛型 45
- 2.8 与Objective-C 的互操作 46
- 2.9 在同一项目中使用Objective-C 和Swift 46
- 2.9.1 在Objective-C 中使用Swift 对象 46
- 2.9.2 在Swift 中使用Objective-C 47
- 2.10 模块 48
- 2.11 内存管理 48
- 2.12 字符串 49
- 2.12.1 比较字符串 50
- 2.12.2 查找字符串 50
- 2.13 数据 50
- 2.13.1 从文件和URL 加载数据 51
- 2.13.2 序列化与反序列化 51
- 2.14 Cocoa 中的设计模式 52
- 2.14.1 模型- 视图- 控制器 52
- 2.14.2 委托 53
- 第3 章 OS X 和iOS 上的应用程序 56
- 3.1 什么是应用程序 56
- 3.1.1 应用程序、框架、实用工具及其他 57
- 3.1.2 App 的构成 58
- 3.1.3 用NSBundle 在应用程序中查找资源 60
- 3.2 应用程序生命周期 61
- 3.2.1 OS X 应用程序 61
- 3.2.2 iOS 应用程序 62
- 3.3 应用程序沙盒 67
- 3.4 用NSNotification 发送通知 70
- 第4 章 图形用户界面 72
- 4.1 OS X 和iOS 中的界面 72
- 4.2 MVC 和应用程序设计 73
- 4.3 nib 文件和故事板 73
- 4.3.1 nib 文件的结构 74
- 4.3.2 故事板 77
- 4.3.3 输出口和操作 77
- 4.3.4 如何加载nib 文件和故事板 78
- 4.4 构建界面 79
- 4.5 构建具有nib 和约束的App 81
- 4.6 iOS 上的界面 84
- 4.7 UI Dynamics 87
- 4.7.1 UI 和重力 87
- 4.7.2 吸附UI 88
- 4.8 Core Animation 89
- 4.8.1 层 90
- 4.8.2 动画 91
- 第5 章 闭包和操作队列 94
- 5.1 Cocoa 中的闭包 95
- 5.2 操作队列中的并发 96
- 5.3 操作队列和NSOperation 96
- 5.4 在操作队列中执行工作 97
- 5.5 融会贯通 98
- 第6 章 在视图上绘制图形 103
- 6.1 如何绘制 103
- 6.2 像素网格 105
- 6.2.1 Retina 显示屏 106
- 6.2.2 像素与屏幕点 107
- 6.3 在视图中绘制 107
- 6.3.1 框架矩形 107
- 6.3.2 边界矩形 108
- 6.4 创建自定义视图 109
- 6.4.1 用纯色填充 110
- 6.4.2 处理路径 111
- 6.4.3 创建自定义路径 112
- 6.4.4 多条子路径 114
- 6.4.5 阴影 115
- 6.4.6 渐变 119
- 6.4.7 变换 121
- 第7 章 SpriteKit 123
- 7.1 SpriteKit 的体系结构 123
- 7.2 制作使用SpriteKit 的App 124
- 7.3 使用SpriteKit 场景 125
- 7.4 SpriteKit 节点 127
- 7.5 将精灵放在场景中 128
- 7.6 对触碰作出响应 129
- 7.7 使用纹理 130
- 7.8 纹理贴图集 131
- 7.9 使用文本 131
- 7.10 用操作实现内容的动画 133
- 7.11 使用形状节点 134
- 7.12 使用图像特效节点 135
- 7.13 向SpirteKit 对象增加物理属性 137
- 7.14 向SpriteKit 对象添加接合 138
- 7.15 SpriteKit 场景照明 138
- 7.16 约束 139
- 7.17 在SpriteKit 中使用阴影 140
- 7.18 使用SpriteKit 编辑器 142
- 第8 章 SceneKit 143
- 8.1 SceneKit 结构 144
- 8.2 使用SceneKit 144
- 8.3 添加SceneKit 视图 145
- 8.4 添加场景 146
- 8.5 添加照相机 146
- 8.6 添加3D 对象 147
- 8.7 添加光源 149
- 8.8 为场景中的内容实现动画 150
- 8.9 创建文本几何体 151
- 8.10 使用材料 153
- 8.11 命中检测 157
- 8.12 约束 158
- 8.13 从COLLADA 文件中加载数据 160
- 8.14 向场景中添加物理仿真 162
- 第9 章 音频与视频 165
- 9.1 AV Foundation 165
- 9.2 用AVPlayer 播放视频 166
- 9.2.1 AVPlayerLayer 167
- 9.2.2 融会贯通 167
- 9.2.3 AVKit 170
- 9.2.4 iOS 上的AVKit 172
- 9.2.5 用AVAudioPlayer 播放声音 174
- 9.3 语音合成 175
- 9.4 使用照片库 176
- 9.4.1 从相机采集照片和视频 176
- 9.4.2 开发照片应用程序 178
- 9.4.3 照片库 181
- 第10 章 iCloud 和数据存储 182
- 10.1 偏好设置 182
- 10.1.1 注册默认偏好设置 183
- 10.1.2 访问偏好设置 184
- 10.1.3 设定偏好设置 184
- 10.2 使用文件系统 184
- 10.2.1 使用NSFileManager 186
- 10.2.2 文件存储位置 189
- 10.3 使用沙盒 189
- 10.3.1 启用沙盒 190
- 10.3.2 打开和保存面板 190
- 10.3.3 安全范围内的书签 191
- 10.4 iCould 192
- 10.5 iCloud 存储什么 193
- 10.6 为iCloud 进行设置 194
- 10.7 测试iCloud 是否正常工作 194
- 10.8 存储设置 195
- 10.8.1 处理外部修改 196
- 10.8.2 iOS 上的相应内容 197
- 10.9 iCloud 存储 199
- 10.9.1 OS X 上的iCloud 存储 200
- 10.9.2 iOS 上的iCloud 存储 204
- 10.10 文档选取器 206
- 10.11 iCloud 的最佳使用 210
- 第11 章 Cocoa 绑定 211
- 11.1 将视图绑定到模型 211
- 11.2 一个简单的绑定App 212
- 11.3 绑定到控制器 214
- 11.4 数组和对象控制器 216
- 11.5 一个更复杂的绑定App 216
- 第12 章 表格视图和集合视图 223
- 12.1 数据源和委托 223
- 12.2 表格视图 224
- 12.2.1 iOS 上的UITableView 224
- 12.2.2 OS X 上的NSTableView 231
- 12.3 集合视图 236
- 第13 章 基于文档的应用程序 240
- 13.1 NSDocument 和UIDocument 类 241
- 13.2 MVC 中的文档对象 241
- 13.2.1 文档的类型 241
- 13.2.2 文档的角色 242
- 13.3 OS X 上基于文档的应用程序 243
- 13.3.1 自动保存与版本 243
- 13.3.2 用NSDocument 表示文档 243
- 13.3.3 保存简单数据 244
- 13.3.4 保存更复杂的数据 246
- 13.4 iOS 上基于文档的应用程序 250
- 第14 章 联网 257
- 14.1 连接 257
- 14.1.1 NSURL 258
- 14.1.2 NSURLRequest 259
- 14.1.3 NSURLSession 259
- 14.1.4 NSURLResponse 和NSHTTPURLResponse 260
- 14.2 开发联网应用程序 261
- 14.3 Bonjour 服务的发现 262
- 14.4 Multipeer Connectivity 264
- 第15 章 与现实世界互动 269
- 15.1 使用位置 269
- 15.1.1 位置硬件 270
- 15.1.2 Core Location 框架 271
- 15.1.3 使用Core Location 272
Swift是一种用于iOS和OS X应用的全新编程语言,它建立在最好的C和Objective-C语言中,并且没有C语言的兼容性限制。Swift采用安全的编程模式,增加了现代功能使编程更容易、更灵活、更有趣。Swift背靠成熟且备受宠爱的Cocoa 和 Cocoa Touch框架的支持,这是一个重新构想软件开发的机会。 Swift经过了数年的酝酿,Apple通过改进现有的编译器、调试器和框架结构奠定了Swift的基础,并通过Automatic Reference Counting(ARC)简化了内存管理。Swift的framework stack建立在坚实的Foundation和Cocoa上,实现了现代化和彻底标准化。 Objective-C本身已经逐步发展到到支持blocks、 collection literals 和modules,使框架不间断的采用现代语言技术。
类型 //隐式指定整数类型 var anInteger = 2 大多数类型不能合并. swift表示"没有值"用nil表示. 在OC中,nil实际上被定义为一个指向0的void指针. int i = (int)(nil)+2; //等于2(因为0+2=2) 这在swift中是不允许的,因为nil和Int是不同的类型. 可选类型: var anObjectInteger : Int? = nil //可选整数,允许为nil 拆包(unwrap): 对一个可选变量拆包,如果它为nil,则会抛出exception. 如果不希望每次用到可选变量时都要对其拆包,可以将他们声明为已拆包的. var unwrapOptionalInteger : Int ! //这样声明会不安全,有时候会忘记值为nil的情况 unwrapOptionalInteger = 1 类型转换: let aString = String(anInteger)