《iOS开发:从零基础到精通》[49M]百度网盘|pdf下载|亲测有效
《iOS开发:从零基础到精通》[49M]百度网盘|pdf下载|亲测有效

iOS开发:从零基础到精通 pdf下载

出版社 清华大学出版社
出版年 2018-02
页数 390页
装帧 精装
评分 9.3(豆瓣)
8.99¥ 10.99¥

内容简介

本篇主要提供iOS开发:从零基础到精通电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com

编辑推荐

  本书面向学习iOS开发的零基础读者。本书从实际开发的角度,提炼出所需要的iOS核心知识,让读者在短时间内有的放矢地掌握iOS开发的核心技能。为了提升读者的学习效率,本书配套提供由作者亲自录制的教学视频,针对每个章节的核心内容进行讲解,方便读者领会并掌握各个知识点。
  本书共包括5个部分,涵盖了开发语言、iOS专业知识、常用工具等各个方面。本书的内容是作者多年来从事iOS开发的经验提炼与总结,是一本既全面立体,又难度适中,且紧扣实践的书籍。


内容简介

  本书适合iOS开发零基础的读者阅读。全书包含六大部分,共24章,涵盖了针对iOS开发入门所需要掌握的核心内容,同时紧扣iOS开发的*新发展趋势,以Objective-C语言为基础,并引入了Swift语言以及ReactNative的介绍。通过本书的系统学习,能够满足一般软件公司对iOS开发工程师的岗位要求。第一部分:Objective-C语言基础。针对初学者介绍iOS开发使用*广泛、成熟度*高的Objective-C语言,简单扼要地介绍了在实际开发中*常使用的语法内容。第二部分:iOS开发入门。基于UIKit框架,介绍了iOS开发中需要优先掌握的基础类,包括基础UI控件、高级UI控件、控制器、手势等。第三部分:iOS开发进阶。着重介绍多线程、网络、存储、绘图、设计模式、设备、地图、推送、证书以及应用发布等进阶技术。第四部分:常用框架以及辅助工具介绍。介绍在实际开发中*常使用的辅助开发工具以及框架。第五部分:Swift语言基础。以Swift3.0为基础,介绍Swift语言的基本使用以及语法知识。第六部分:ReactNative基础。重点介绍了ReactNative的环境部署、基本概念以及常用框架的使用方法等内容。本书适合iOS开发新手、iOS程序员使用,也可以作为相关培训机构和大专院校教学用书。

目录

第1部分
Objective-C语言基础
第1章
环境搭建
3
1.1Xcode简介3
1.2创建App应用3
1.2.1下载安装Xcode3
1.2.2使用Xcode创建App.4
1.2.3Xcode开发界面介绍5
1.3程序调试.6
1.3.1App运行状态监控6
1.3.2UI界面分析6
1.3.3断点调试.7
1.4Xcode常用快捷键8
1.5常用插件.9
1.5.1苹果封锁第三方插件的原因.9
1.5.2源码编辑器扩展.9
1.6快捷代码段.10
1.6.1如何创建代码段.10
1.6.2常用代码段.11
第2章
数据类型与表达式
13
2.1数据类型与常量.13
2.1.1基本数据类型.13
2.1.2限定词.15
2.1.3id与instancetype17
2.2算术表达式.18
2.2.1基本运算符.18
2.2.2数据类型转换.20
2.3循环结构.22
2.3.1for循环22
2.3.2for-in循环.24
2.3.3while循环.26
目录
iOS开发:从零基础到精通
6
2.3.4break与continue28
2.4选择结构.29
2.4.1if语句29
2.4.2switch语句32
2.4.3条件运算符/三目运算符.35
2.5typedef语句36
第3章
类、对象与方法
38
3.1类.38
3.1.1类的定义.38
3.1.2类的继承.40
3.2属性.42
3.2.1属性的定义.42
3.2.2公有属性与私有属性44
3.2.3属性关键字.45
3.3方法.48
3.3.1方法的定义.48
3.3.2方法的调用.49
3.3.3方法的重写.52
3.4对象.54
3.4.1创建对象.54
3.4.2对象操作.57
3.5变量.60
3.5.1局部变量.60
3.5.2全局变量.61
3.5.3静态变量.64
3.5.4const关键字.66
第4章
Foundation框架
.69
4.1Foundation框架简介.69
4.2字符串类.69
4.2.1不可变字符串NSString69
4.2.2可变字符串NSMutableString.74
4.3数组类.76
4.3.1不可变数组NSArray.76
4.3.2可变数组NSMutableArray.79
4.4字典类.81
4.4.1不可变字典NSDictionary.81
4.4.2可变字典NSMutableDictionary84
4.5NSNumber类86
7
目录
4.6NSDate类.88
4.7NSFileManager类92
4.7.1文件操作.92
4.7.2目录操作.96
4.7.3枚举目录中的内容98
4.7.4文件的读取与写入100
4.8NSURL类.102
4.9NSBundle类.103
第5章
Objective-C语言特性
.107
5.1代码块.107
5.1.1Block简介.107
5.1.2Block的参数与返回值109
5.1.3操作Block外部的变量.112
5.1.4Block回调.114
5.2分类.116
5.3协议.118
5.3.1协议简介.118
5.3.2代理.119
5.4KVC.120
5.4.1使用KVC赋值取值120
5.4.2字典转模型122
5.4.3修改readonly的属性以及私有属性123
5.5KVO125
第6章
Objective-C进阶
128
6.1对象复制.128
6.1.1浅复制与深复制128
6.1.2可变对象复制与不可变对象复制129
6.1.3自定义对象复制135
6.2内存管理.137
6.3预编译指令.139
6.3.1宏定义.139
6.3.2#include、#import与@class142
6.3.3条件编译.143
6.4NSLog()函数145
6.4.1NSLog()函数基本使用.145
6.4.2定制输入日志的格式146
6.5结构.148
6.5.1结构的定义与基本使用148
iOS开发:从零基础到精通
8
6.5.2结构的嵌套150
第2部分
iOS开发基础
第7章
基础UI控件
.155
7.1UIKit框架.155
7.2视图UIView.156
7.2.1UIView简介.156
7.2.2视图UIView的外观159
7.2.3视图UIView的形变162
7.2.4视图UIView的层次关系163
7.2.5视图UIView的动画166
7.2.6响应用户交互事件167
7.2.7内容模式contentMode170
7.2.8图片拉伸.172
7.2.9使用代码创建自定义UIView.175
7.2.10使用XIB创建自定义UIView177
7.2.11控件改变坐标系(convertRect:)180
7.3图片控件UIImageView181
7.3.1基本使用.181
7.3.2常用操作.183
7.3.3帧动画功能185
7.4按钮控件UIButton.186
7.4.1基本使用.186
7.4.2按钮的创建188
7.4.3调整图标与标题的位置190
7.5文本控件UILabel.192
7.5.1UILabel简介192
7.5.2常用的UILabel使用场景.194
7.6提示框控件.195
7.7文本输入框UITextField198
7.7.1UITextField的基本属性198
7.7.2UITextField的代理方法简介201
7.7.3UITextField的代理方法实例之键盘回收203
7.7.4UITextField的代理方法实例之字数限制205
第8章
高级UI控件
.207
8.1滚动视图UIScrollView.207
8.1.1UIScrollView基本使用.207
8.1.2UIScrollView常用代理方法的实现.209
9
目录
8.1.3视图的缩放功能212
8.2表视图UITableView214
8.2.1UITableView基本介绍214
8.2.2UITableView的数据源方法217
8.2.3了解单元格UITableViewCell.219
8.2.4UITableView创建示例220
8.2.5UITableView代理方法之点击单元格222
8.2.6UITableView代理方法之编辑单元格224
8.2.7UITableViewCell性能优化.227
8.2.8分段Section.228
8.2.9分段Section实现示例231
8.2.10自定义Cell.235
8.2.11Cell高度的设置.238
8.2.12动态调整Cell高度(self-sizing).238
8.2.13动态调整Cell高度(代码)
240
8.2.14UITableView+FDTemplateLayoutCell计算Cell高度.244
8.2.15改变Cell位置247
8.2.16UITableView的Header和Footer.247
8.2.17去除多余的单元格分割线248
8.3集合视图UICollectionView249
8.3.1UICollectionView简介249
8.3.2UICollectionView数据源协议DataSource252
8.3.3最简单的集合视图实现253
8.3.4UICollectionView代理协议方法简介255
8.3.5UICollectionView代理方法实例256
8.3.6UICollectionViewFlowLayout简介257
8.3.7UICollectionViewFlowLayout使用实例259
8.3.8UICollectionViewDelegateFlowLayout类的代理方法实现262
8.3.9自定义Cell.265
8.4手势UIGestureRecognizer267
8.4.1UIGestureRecognizer简介267
8.4.2点击手势UITapGestureRecognizer269
8.4.3捏合与旋转手势UIPinchGestureRecognizer.270
8.4.4滑动手势UISwipeGestureRecognizer273
8.4.5拖动手势UIPanGestureRecognizer275
8.4.6长按手势UILongPressGestureRecognizer276
第9章
控制器
278
9.1控制器UIViewController278
9.1.1控制器简介以及创建控制器278
iOS开发:从零基础到精通
10
9.1.2使用XIB以及Storyboard创建控制器279
9.1.3控制器的生命周期283
9.1.4使用Storyboard切换控制器285
9.1.5使用代码切换控制器287
9.1.6控制器嵌套288
9.2导航控制器UINavigationController.291
9.2.1导航控制器简介291
9.2.2控制器跳转295
9.2.3子控制器的管理295
9.2.4UINavigationBar296
9.2.5barStyle属性297
9.2.6barTintColor与tintColor.298
9.2.7导航栏设置背景图片299
9.2.8UINavigationItem.300
9.2.9UINavigationItem定制示例302
9.2.10UINavigationItem显示原始图片样式304
9.2.11UINavigationController的代理方法.304
9.2.12顺传数据.305
9.2.13使用代理逆传数据307
9.2.14使用通知逆传数据309
9.2.15使Block逆传数据.310
9.2.16工具栏toolBar.311
9.3UITabBarController.313
9.3.1UITabBarController的常用属性和方法.313
9.3.2UITabBar的常用属性和方法.314
9.3.3UITabBarItem的常用属性和方法315
9.3.4微信TabBar实现.316
9.3.5UITabBarController的代理协议.318
9.4UIWindow、UIView与UIViewController关系.319
9.4.1概念简介.319
9.4.2关系描述.320
第10章
其他UI控件
.322
10.1WKWebView.322
10.1.1WKWebView简介.322
10.1.2WKWebView的基本使用——加载网页.324
10.1.3网页浏览控制325
10.1.4加载本地文件328
10.1.5WKWebView代理协议之WKNavigationDelegate.330
10.2UITextView.330
11
目录
10.2.1UITextView的基本使用330
10.2.2UITextView的代理方法332
10.3UIPageControl.333
10.3.1UIPageControl介绍.333
10.3.2UIPageControl实际应用.334
10.4UIPickerView338
10.4.1UIPickerView简介338
10.4.2UIPickerView的基本使用340
10.4.3相互依赖的多列选择器342
10.5UISilder.345
10.5.1UISlider基本介绍.345
10.5.2UISlider实例.347
10.6UIDatePicker.349
10.6.1UIDatePicker基本介绍.349
10.6.2UIDatePicker基本使用.349
10.7UISegmentedControl351
10.7.1UISegmentedControl简介.351
10.7.2UISegmentedControl实例.352
第3部分
iOS开发进阶
第11章
多线程
359
11.1线程基础知识.359
11.2GCD.362
11.2.1GCD基本概念介绍.362
11.2.2队列与任务组合363
11.2.3线程间通信369
11.2.4队列组dispatchgroup371
11.2.5延迟执行操作373
11.3NSOperation374
11.3.1NSOperation基本使用374
11.3.2线程间通信379
11.3.3任务间的执行依赖380
第12章
网络
.382
12.1网络开发基本概念介绍382
12.2常用网络协议之HTTP.383
12.3网络请求之GET、POST请求384
12.4AFNetworking框架介绍.385
12.5聚合数据API简介387
iOS开发:从零基础到精通
12
12.6GET请求与POST请求使用示例.389
12.7JSON和XML简单介绍.391
第13章
数据持久化
.394
13.1沙盒.394
13.1.1沙盒基础.394
13.1.2在Mac上查看沙盒目录.396
13.2Plist文件.397
13.2.1Plist简介.397
13.2.2Plist文件的读取399
13.2.3Plist文件的写入400
13.2.4操作实例.402
13.3偏好设置NSUserDefaults.406
13.3.1NSUserDefaults简介.406
13.3.2读写示例.407
13.4归档.409
13.4.1基本使用.409
13.4.2单个对象归档/解档.410
13.4.3自定义对象归档/解档.412
13.4.4归档多个自定义对象416
13.4.5子类对象的归档419
13.4.6归档多个不同类型的对象422
13.5SQLite.424
13.5.1数据库的操作424
13.5.2表的操作.427
13.5.3数据记录的操作430
13.6FMDB433
13.6.1基本介绍.433
13.6.2更新操作与查询操作436
13.6.3线程安全.438
13.7CoreData.439
13.7.1概念简介.439
13.7.2使用示例.440
13.8Realm.445
13.8.1Realm基本介绍.445
13.8.2Realm的安装.449
13.8.3常用属性与方法451
13.8.4Realm使用示例.453
13
目录
第14章
绘图和动画
.457
14.1核心绘画.457
14.1.1核心绘画的基本概念457
14.1.2贝塞尔路径458
14.1.3绘图方法和步骤460
14.1.4常见图形的绘制方法461
14.2UIImage绘图应用.464
14.2.1绘制图片.464
14.2.2添加水印.467
14.2.3裁剪圆形图片470
14.2.4截屏.473
14.3CALayer474
14.3.1CALayer简介474
14.3.2iOS开发中的坐标系.477
14.3.3动画属性.481
14.4核心动画.482
14.4.1核心动画简介482
14.4.2动画的实现步骤484
14.4.3CAPropertyAnimiation属性动画485
14.4.4CABasicAnimiation基本动画.486
14.4.5CAKeyframeAnimation关键帧动画.487
14.4.6CASpringAnimation弹簧动画489
14.4.7CAAnimationGroup动画组490
14.4.8CATransition转场动画492
第15章
设计模式
495
15.1iOS下的MVC设计模式495
15.2单例模式.497
15.3iOS下的MVVM设计模式499

精彩书摘

  对象与方法
  3.1类
  3.1.1类的定义
  在Objective-C中,每个类的定义包括两个部分:接口(interface)和实现(implementation)。接口部
  分定义在.h文件中,包含类的声明、属性以及方法,主要作用是对外提供访问接口。实现部分定义在.m
  文件中,主要用于方法的功能实现。这种定义类的方法,好处在于将公共声明(接口)与代码实现分开,
  对外屏蔽了功能实现的细节,体现了面向对象的封装特性。
  1.
  类定义简介
  类定义是一种类型的对象的原型,其声明了每个对象都具有的属性(Property),同时还定义了同一
  类的所有对象都使用的一系列方法(Method)。
  编译器为每个类创建一个可访问的对象,称为类的对象(也称为工厂对象),类方法负责创建属于该
  类的新对象。类对象是类编译后的版本,由它创建的对象叫作类的实例,创建对象的过程也常称作实例化。
  在Objective-C中,一个类有接口文件和实现文件两部分组成,通常放在不同的文件里面。其中:
  .接口文件(.h后缀文件):主要完成类的具体声明。
  .实现文件(.m后缀文件):主要完成类的具体实现。
  当使用Xcode创建一个类时,Xcode会自动创建.h和.m两个文件。
  2.
  接口文件
  接口文件完成类的声明,向外界提供如何使用该类,主要体现了以下3类信息。
  .继承关系:通过继承关系可以了解该类是哪个类的子类,从而可以了解可供调用的父类的方法和
  属性。
  .属性Property。
  .方法Method。
  接口部分的定义以@interface开始,以@end结束。下面的示例代码,定义了一个游戏人物的Player
  类,这个类继承自NSObject,其中又定义了两个人物属性healthPoint与magicPoint,以及一个初始化类方
  法player,同时又提供了两个攻击方法,一个普通攻击normalAttack,一个魔法攻击magicAttack。
  #import
  @interfacePlayer:NSObject
  @property(nonatomic,assign)inthealthPoint;
  @property(nonatomic,assign)intmagicPoint;
  第3章
  39
  第3章类、对象与方法
  +(Player*)player;
  -(void)normalAttack;
  -(void)magicAttack;
  @end
  注意:在iOS开发中,属性和方法的命名一般推荐使用驼峰法命名规则。驼峰法命名规则就是当属性
  名或者方法名由多个单词构成时,第一个单词以小写字母开始,之后每个单词的首字母都用大写,驼峰法
  命名规则可以提升程序的可读性。
  3.
  实现文件
  类的实现部分以@implementation开始,并以@end结束。在类的实现部分,需要使用#import命令,
  引用类的接口部分。
  在类的实现部分(.m文件)中,需要对接口部分定义的方法进行实现。
  如下面实例,在类方法Player中,创建了Player对象,并且给healthPoint/magicPoint属性赋了初始值,
  并且定义了两个攻击方法,其中,当使用魔法攻击的时候,还会消耗自身的magicPoint值。
  .引用.h文件。
  #import"Player.h"
  .实现接口文件中定义的方法。
  @implementationPlayer
  +(Player*)player{
  //实例化对象
  Player*player=[[Playeralloc]init];
  //设置属性初始值
  player.healthPoint=100;
  player.magicPoint=100;
  //返回对象
  returnplayer;
  }
  -(void)normalAttack{
  //普通攻击
  ...
  }
  -(void)magicAttack{
  //魔法攻击,消耗自身魔法值
  self.magicPoint-=10;
  }
  @end
  iOS开发:从零基础到精通
  40
  3.1.2类的继承
  继承是面向对象编程的重要特性之一,类定义是累加的,每一个定义的类都是基于其父类,并且可以
  继承父类中定义的属性和方法。需要注意的是,NSObject类是所有类的父类。
  1.
  新增子类
  在Xcode中,依次单击File→New→File→CocoaTouchClass,即可新增类,如图3-1所示。在
  Subclassof中输入或者选择新增类的父类,如图3-2所示:新增的Magician类是Player类的子类,因为魔
  法师(Magician)也是属于游戏人物(Player)之一。
  ……

前言/序言

  一、编写本书的目的随着中国移动互联网行业的蓬勃发展,几年前,我也积极投身到互联网创业中。在创业方向的选择上,几经尝试,最终选择了互联网教育。一方面是因为希望为中国的互联网企业提供更多的合格人才;另外一方面也希望为广大的学子提供一个高质量、低价格的学习平台。目前,我国的高等教育的人才供给与市场需求之间还存在着巨大的偏差,特别在移动开发兴起的前几年,能够熟练掌握移动应用开发技能的工程师极为稀缺,因而造成了企业用人成本居高不下。互联网企业通常只能靠高薪挖猎才能获得心仪的员工,这严重制约了互联网企业,特别是中小互联网企业的创新与发展步伐。为了解决供需两端的矛盾,我就在思考能否提供一本高质量且低价格,既无学习门槛且又符合最佳项目实践的图书呢?从去年开始,我和我的伙伴们一同开始筹划编写这本书,把我们在实践教学过程中以及实践开发过程中的经验进行提炼和总结,本书适合没有任何移动开发技术的读者从零开始学习,并且能够快速掌握实际工作中最常使用的核心技术,做到合理利用时间且有的放矢地进行学习。移动技术的开发经过几年的竞争,已经形成了两大方向:iOS以及Android。Android平台的用户数量巨大,且Android开发以Java语言为基础,所以之前很多从事Java开发的工程师都转型成为Android开发工程师,其入门门槛相对较低。而苹果的iOS系统,由于其采用的语言是Objective-C,在最初阶段能够熟练掌握该门语言的工程师数量极为稀缺,因此造成了iOS开发的入门门槛比较高。由于iOS系统是一个相对封闭的系统,其前期的语言学习有一定难度,但是一旦入门之后,其进阶学习的难度要比Android平台容易很多。虽然目前Android平台的用户数量超过iOS平台,但苹果设备在工业设计、用户体验、客户价值等方面都有很大的优势。
二、本书的主要内容在开始编写本书之前,我们团队内部针对究竟该采用Objective-C语言为主,还是Swift语言为主,展开了激烈的讨论。由于大家学习一门语言更多的目的是出于就业需要,综合目前国内的现状,我们认为在目前阶段还是需要以Objective-C语言为主。虽然苹果公司官方以及国内外很多媒体都在大力推广Swift语言,但就国内现状而言,Swift语言还不是一门成熟且被普遍使用的语言,但我们相信在2~3年以后,Swift语言一定会有较快的发展,而如果从就业角度考虑,我们认为还是需要优先掌握Objective-C语言。在介绍iOS平台的基础知识过程中,我们使用了Objective-C语言,但对Swift语言也提供了入门使用的语法介绍,有兴趣的读者可以使用Swift语言把前面的代码进行重写。另外,从2015年开始,ReactNative变得越发火热,为了紧跟技术发展趋势,同时为了增加大家的就业竞争力,我们在本书中也加入了对ReactNative技术的介绍。总之,全书的内容是紧紧围绕就业这个目的展开的,如果你想成为一名iOS开发工程师,本书会是你的一个好选择。本书包括六大部分,24章。
  第1部分介绍了Objective-C语言。如果完整地介绍Objective-C语言,需要一本厚厚的书籍,而我们把Objective-C语言在日常编程工作中最常使用的功能进行了提炼,让大家能够快速地掌握Objective-C语言中最核心的内容。
  第2部分以UIKit框架为主,介绍了iOS开发中构成界面所需的各种控件,同时重点介绍了在实际应用中广泛使用的几种控制器,包括普通控制器、导航控制器等。
  第3部分提供了iOS开发中使用的进阶内容,包括多线程技术、数据持久化技术、网络、地图、传感器、核心绘图、核心动画、消息推送、证书管理以及应用发布等内容,使读者能够对iOS开发中的高级知识点具备完整的认知。
  第4部分介绍了在iOS开发中使用的第三方开源框架和工具。程序员的世界是一个开放的世界。开放、开源应该是每个致力于从事技术岗位的程序员的追求。借助第三方开源框架以及工具能够帮助我们极大地提升开发效率,学会使用其他人提供的“梯子”已经是当前每个程序员必须掌握的技巧。
  第5部分我们提供了Swift语言的介绍。虽然Swift语言目前在国内还没有完全成为主流,并且其自身也存在一些不完善的地方,但提前掌握Swift语言的基础对于将来向Swift语言过渡是大有益处的。第6部分是ReactNative技术的介绍。ReactNative是Facebook于2015年开源的跨平台移动应用开发框架,ReactNative之所以近一两年非常火热,其中一个重要原因在于其能够同时完成iOS以及Android两个客户端的编写。在ReactNative的章节中我们着重介绍了ReactNative开发环境的部署、重要概念以及常用控件的使用,使读者能够由浅入深地逐步掌握该项技术的核心用法。
  三、配书资源
  为了帮助各位读者学习,我们团队录制了配套教学视频,每个视频的长度都控制在10分钟左右,便于大家能够在最短的时间内掌握每个知识点的核心内容,欢迎各位读者到清华大学出版社官网下载或联系作者获取(www.99ios.com)。另外,针对每个章节,我们都提供了示例代码,也欢迎各位读者下载。
  四、反馈与勘误
  欢迎广大读者对本书做出反馈,让我们知道本书中哪些部分是您喜欢的或者哪些部分是需要完善的。如果您对本书有任何建议,请发送邮件至3300170691@qq.com。
  虽然我们团队十分用心确保内容的准确性,但错误依然难以避免。如果在阅读过程中,您发现了书中存在的错误,非常感谢您能反馈给我们,请将错误内容发送至3300170691@qq.com,这不仅能够帮助其他读者解除疑惑,也可以帮助我们在下一个版本中进行改善。
  五、致谢
  完成一本书籍的编写是对技术、体力以及意志的综合考验,我们团队牺牲了无数的休息时间才完成了全书的编写。首先,需要感谢清华大学出版社的编辑在编写过程中给予我们的耐心指导。其次,要感谢我的伙伴们,特别是汤海波以及闫珍完成了ReactNative以及Swift内容的编写,并对全书的内容进行了审核;李维佳作为我最优秀的学生完成了全书内容的整理以及案例代码的编写。最后,感谢我的爱人,在我编写本书期间承担起了全部的家庭事务;2017年恰逢我的父母六十大寿,在此也祝愿两位老人身体健康,每天都有好心情!
  由于时间仓促,书中难免有不妥之处,请读者原谅。
  史昕
  2017年12月