iOS编程(第2版)

iOS编程(第2版) pdf epub mobi txt 电子书 下载 2025

Joe Conway,Aaron Hillegass 著,夏伟频 译
图书标签:
  • iOS
  • Swift
  • Objective-C
  • 移动开发
  • 编程
  • 技术
  • 计算机
  • 开发
  • 教程
  • 苹果
  • Xcode
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 华中科技大学出版社
ISBN:9787560976976
版次:2
商品编码:10945354
包装:平装
开本:16开
出版时间:2012-03-01
用纸:胶版纸
页数:544

具体描述

编辑推荐

  《iOS编程(第2版)》有两个特点:
     首先、涵盖iOS应用开发必备知识:从Objective-C基础知识到新语言特性,从AppKit库到常见的Cocoa设计模式,从Xcode技巧到Instruments,不一而足。
     第二、指导读者以正确的方法解决问题:Objective-C的习惯约定有哪些(例如命名约定,内存管理约定),创建子类时如何处理初始化方法,Cocoa的常见设计模式有哪些,如何选择数据保存方法……iOS开发包括iPhone开发、iPod touch开发和iPad开发,书中绝大部分内容可通用,有差异的部分(例如iPad界面)单独予以说明。本书使用新的iOS SDK,包括4.1版本的Xcode。虽然iOS SDK一直在升级,但本书翻译完成之际,与SDK有关的内容仍然有效。

内容简介

  《iOS编程(第2版)》涵盖了开发iOS应用的方方面面。从Objective-C基础知识到新增加的语言特性;从AppKit库到常见的Cocoa设计模式;从Xcode技巧到Instrumentst等。如果读者刚接触iOS编程,阅读本书前两章可以快速入门。如果读者已经有iOS编程经验,阅读本书可以拾遗补缺。本书的另一个特色是教读者以正确的方法解决问题。Objective-C的习惯约定有哪些(例如命名约定,内存管理约定),创建子类时如何处理初始化方法,Cocoa的常见设计模式有哪些,如何选择数据保存方法等。这些问题,如果读者自己摸索,难免费时费力。本书已经将这些知识整理、归纳并清楚地呈现在读者面前。

作者简介

  Joe Conway是Big Nerd Ranch的资深教师,自iOS平台发布以来一直从事相关的咨询服务。Joe毕业于美国威斯康辛大学,在Mac OS X早期即开始编写Objective-C和Cocoa代码。他编写了Big Nerd Ranch的“iOS新手培训课程”教材。该教材广受好评,是本书的原型。
  Aaron Hillegass曾就职于NeXT公司和苹果公司,目前在Big Nerd Ranch教授iOS编程课程。Aaron在NeXT时编写了第一本OpenStep教材(OpenStep是Cocoa的前身)。本书以Big Nerd Ranch的教学课程为基础,涵盖了近20年OpenStep和Cocoa的开发成果。

目录

Table of Contents
简介
本书适合哪些读者
第二版有哪些更新?
教学理念
如何使用本书
本书是如何组织的
代码风格
版式说明
开发所需的硬件与软件
第1章 第一个简单的iOS应用
1.1 创建Xcode项目
1.2 创建界面
1.3 模型-视图-控制器
1.4 声明
声明实例变量
声明方法
1.5 创建关联
设置指针
设置目标(target)和动作(action)
关联小结
1.6 实现方法
1.7 针对模拟器构建并运行应用
1.8 安装应用
1.9 应用图标
1.10 启动图片
第2章 Objective-C
2.1 对象
2.2 使用实例
创建对象
发送消息
释放对象
2.3 编写命令行工具RandomPossessions
NSString
NSArray与NSMutableArray
2.4 子类化Objective-C类
实例变量
存取方法
实例方法
初始化方法
其他初始化方法与初始化方法链
类方法
测试子类 5
2.5 异常与控制台窗口
2.6 快速枚举
2.7 练习
第3章 内存管理
3.1 内存管理基础
C语言的内存管理
通过对象管理内存
3.2 引用计数
使用retain计数
使用autorelease
存取方法和内存管理
实现dealloc
通过属性机制简化存取方法
copy和mutableCopy
Retain计数规则
3.3 深入学习:再谈内存管理
第4章 委托机制与Core Location
4.1 项目、目标和框架
4.2 Core Location
通过CLLocationManager获取更新数据
4.3 委托机制
协议
协议方法
委托机制、控制器对象和内存管理
4.4 使用调试器
4.5 练习:方位
4.6 深入学习:构建阶段、编译器错误和连接器错误
预处理(Preprocessing)
编译
连接
第5章 MapKit与文本输入
5.1 对象图
5.2 MapKit框架
5.3 界面属性
5.4 设置MapView对象的委托对象
使用文档
创建MKAnnotation子类
标记位置
完成Whereami
5.5 练习:扩充标注
5.6 练习:根据地理位置获取城市信息
第6章 创建UIView子类
6.1 创建自定义视图
drawRect:方法
创建UIView实例
6.2 绘制文字和阴影
6.3 使用UIScrollView
6.4 实现缩放功能
6.5 隐藏状态条
6.6 练习:颜色
6.7 深入学习:Retain循环
6.8 深入学习:重画视图
第7章 视图控制对象
7.1 视图控制对象与XIB文件
7.2 使用视图控制对象
创建UITabBarController对象
创建视图控制对象和标签项
为视图控制对象创建视图
深入浅出XIB:介绍文件所有者
7.3 视图的显示和消失
7.4 视图控制对象的生命周期与内存过低警告
7.5 UIViewController子类与模板
7.6 练习:地图标签
第8章 方向感应器
8.1 设置方向感应器
8.2 获取方向感应器数据
8.3 加速方向与加速数值
8.4 使用加速感应器数据
8.5 使加速感应器数据更“平滑”
8.6 侦测摇动
8.7 练习:改变颜色
8.8 深入学习:滤波与频率
8.9 深入学习:Retina显示屏
第9章 通告机制与设备转动
9.1 通告中心
9.2 UIDevice通告
9.3 自动转屏
用代码设置自动缩放掩码与按位运算符
9.4 强制使用横排模式
9.5 练习:设备近身通告
深入学习:覆盖自动转屏
第10章 UITableView与UITableViewController
10.1 编写Homepwner应用
10.2 UITableViewController
创建UITableViewController子类
10.3 UITableView数据源
PossessionStore:单实例对象
实现数据源方法
10.4 UITableViewCell对象
创建并获取UITableViewCell对象
重用UITableViewCell对象
10.5 代码片段库
10.6 练习:表格段
第11章 编辑UITableView
11.1 编辑模式
11.2 增加行
11.3 删除行
11.4 移动行
第12章 UINavigationController
12.1 UINavigationController
UINavigationBar
12.2 加入额外的UIViewController
12.3 UINavigationController的导航功能
将视图控制对象压入栈
视图控制对象之间的数据传递
视图的显示和消失
12.4 练习:数字键盘(Number Pad)
第13章 相机
13.1 通过UIImageView显示图片
通过UIImagePickerController拍摄照片
ImageStore
NSDictionary
创建并使用键
隐藏键盘
13.2 练习:删除图片
13.2 深入:摄像
第14章 UIPopoverController与模态视图控制对象
14.1 将Homepwner改写为通用应用
14.2 UIPopoverController
14.3 模态视图控制对象
关闭模态视图控制对象
模式视图控制对象的样式
编写视图控制对象的委托协议
模态视图控制对象的过渡动画
第15章 保存、读取与多任务处理
15.1 应用沙盒
获取文件路径
15.2 固化
对象的固化
对象的解固
15.3 应用状态、状态切换与多任务处理
15.4 通过NSData保存数据
15.5 再谈内存过低警告
15.6 “模型-视图-控制器-存储”设计模式
15.7 练习:为Whereami增加固化功能
15.8 深入:应用状态的切换
15.9 深入:文件系统的读取和写入
15.10 深入:程序包
第16章 创建UITableViewCell子类
16.1 创建HomepwnerItemCell
创建子视图
子视图的布局
使用UITableViewCell子类对象
16.2 处理图片
16.3 练习:辅助指示视图
16.4 练习:缩小原图
第17章 Core Data
17.1 对象-关系映射
17.2 用Core Data重写PossessionStore的数据保存功能
模型文件
NSManagedObject与NSManagedObject子类
更新PossessionStore
为Homepwner增加AssetType功能
17.3 再谈SQL
17.4 各种保存机制的优缺点
17.5 练习:增加AssetType对象
17.6 练习:AssetType对象的iPad界面
第18章 本地化
18.1 通过NSLocale实现国际化
18.2 资源的本地化
18.3 NSLocalizedString与字符串对照表
18.4 练习:增加一套本地化资源
18.5 深入:NSBundle在国际化中的作用
第19章 设置
19.1 更新Whereami
19.2 NSUserDefaults
19.3 深入:“设置”应用
第20章 触摸事件与UIResponder
20.1 触摸事件
20.2 创建TouchTracker应用
20.3 处理触摸事件并创建线条对象
20.4 响应对象链
20.5 练习:保存和读取
20.6 练习:圆圈
20.7 深入学习:UIControl
第21章 Instruments
21.1 静态分析器
21.2 Instruments
21.3 Allocations组件
Allocations组件的设置选项
内存堆快照分析
Time Profiler组件
21.3 Xcode方案
创建新方案
21.4 构建设置
第22章 Core Animation Layer
22.1 层与视图的关系
22.2 创建CALayer对象
22.3 层的显示内容
22.4 隐式可动画属性
22.5 深入:通过代码生成显示内容
22.6 深入:层、位图与上下文
22.7 练习:动态生成层的显示内容
第23章 通过CAAnimation控制动画
23.1 动画对象
23.2 通过CABasicAnimation实现旋转动画
速度控制函数
动画结束后的处理
23.3 通过CAKeyframeAnimation实现弹跳动画
23.4 练习:更多动画效果
23.5 深入:外观层和模型层
第24章 Block对象与范畴
24.1 为TouchDrawView上色
24.2 Block对象
Block对象与变量
捕获变量
通过其他内建的方法使用Block对象
通过Block对象保持代码的短小精练
24.3 范畴
24.4 深入学习:内存管理与Block对象
24.5 深入学习:比较多种回调机制实现途径的优缺点
第15章 Web服务与UIWebView
25.1 Web服务
编写Nerdfeed
从指定的URL获取数据
使用NSURLConnection
解析XML数据
日志输出技巧
25.2 UIWebView
25.3 深入学习:NSXMLParser
25.4 深入学习:HTTP请求主体
25.5 深入学习:认证信息
25.6 练习:解析并显示更多数据
25.7 练习:加强UIWebView
第26章 UISplitViewController
26.1 在Nerdfeed中使用UISplitViewController
26.2 主、从视图控制对象间的通信
26.3 在竖排模式下显示主视图控制对象
26.4 将Nerdfeed改写为通用应用
第27章 多媒体播放与后台运行
27.1 创建MediaPlayer应用
27.2 系统声音
注册系统声音
播放系统声音
27.3 播放压缩格式的音频文件
27.4 播放视频文件
MPMoviePlayerViewController
视频文件的预读
27.5 后台运行
后台运行规则
其他形式的后台运行
27.6 底层API
27.7 练习:录音
第15章 Bonjour与Web服务端
28.1 Bonjour
创建CocoaServer
发布Bonjour服务
通过Bonjour查找服务
28.2 HTTP通信
用Objective-C编写Web服务端
获取服务端的网络地址信息
字节序
创建服务请求
接收Web请求
28.3 深入学习:TXTRecords
第29章 推送通知与网络编程
29.1 设置客户端,为接收推送通知做准备
注册客户端
创建并设置针对推送通知的provisioning profile
29.2 投递推送通知
向provider发送设备token
29.3 发送推送通知
通过NSStream和Apple服务器创建网络连接
通过NSStream建立网络连接
为Apple服务器提供数据
处理投递错误
再谈针对流连接的数据读取
29.4 几种额外的客户端通知处理机制
声音和图标标记
通过推送通知传送自定义数据
29.5 正式的通知服务器以及其他发布事宜
29.6 深入学习:反馈服务
第30章 后记
30.1 接下来做什么
30.2 结束语
索引

《iOS编程(第2版):探索移动应用开发的深度实践》 一本关于苹果移动生态系统深层原理与高级技巧的详尽指南,助力您从新手迈向精通,打造卓越的iOS应用。 在当今移动互联网浪潮的席卷下,iOS应用开发已成为一项极具潜力和创造力的技能。本书《iOS编程(第2版)》并非仅仅是简单的API罗列或基础语法的堆砌,而是一次深入苹果生态系统心脏的探索,旨在为广大iOS开发者,无论是初学者还是希望提升技能的进阶者,提供一套系统、全面且极具实践指导意义的学习路径。它将带领您穿越Objective-C和Swift这两种主要的iOS开发语言的迷宫,理解Cocoa Touch框架的精髓,并熟练掌握构建现代、高性能、用户体验至上的移动应用所需的关键技术和设计模式。 本书的结构设计严谨而循序渐进,从最基础的开发环境搭建、项目管理,逐步深入到UI界面设计、数据持久化、网络通信、多线程处理,再到高级的动画效果、性能优化、安全性实践以及最新的iOS平台特性。每一章节都围绕着解决实际开发中的痛点和挑战展开,力求让读者在掌握理论知识的同时,能够立刻将其运用到实际的项目开发中,从而获得“学以致用”的成就感。 第一部分:奠定坚实基础,开启编程之旅 在本书的开篇,我们将带领您系统地了解iOS开发所必需的基础知识。首先,我们会详细介绍Xcode集成开发环境(IDE)的使用,包括其界面布局、工程创建、代码编辑、调试工具以及性能分析等功能,确保您能够高效地进行开发工作。您将学习如何利用Interface Builder可视化地构建用户界面,理解Storyboards和XIB文件的作用,以及如何将其与代码进行连接。 Objective-C和Swift是iOS开发的两大基石。本书将以清晰易懂的方式,分别阐述这两种语言的核心概念。对于Objective-C,我们将深入讲解其面向对象特性、消息传递机制、引用计数(ARC)内存管理等关键概念。而对于Swift,我们将重点介绍其现代化的语法特性,如类型安全、可选类型、泛型、协议导向编程以及强大的闭包使用。本书不会强迫您只选择一种语言,而是鼓励您理解两种语言的优势,并根据项目需求灵活运用,甚至在同一项目中进行互操作。 第二部分:UI构建与交互设计,创造引人入胜的用户体验 用户界面(UI)和用户体验(UX)是衡量一个iOS应用成功与否的关键因素。本部分将聚焦于Cocoa Touch框架的核心组件,带领您深入掌握如何构建丰富、响应式且富有吸引力的用户界面。您将学习如何使用UIKit框架构建各种常见的UI元素,如按钮、文本框、列表(UITableView和UICollectionView)、导航控制器、标签栏等,并深刻理解其背后的布局机制,包括Autoresizing、Auto Layout以及Stack Views,确保您的应用在不同尺寸和方向的设备上都能呈现出最佳效果。 除了静态的UI元素,交互性是现代应用不可或缺的一部分。我们将详细讲解手势识别(Gesture Recognizers),让您的应用能够响应用户的触摸、拖动、捏合等操作。此外,我们还将探索动画技术,通过Core Animation和SpriteKit等框架,为您的应用注入生动的视觉效果,提升用户参与度。您将学习如何创建平滑的过渡动画、复杂的粒子效果,以及如何利用动画来引导用户操作,增强应用的整体流畅感。 第三部分:数据管理与网络通信,构建功能强大的应用 数据是任何应用的灵魂。本书将为您提供一套全面的数据管理方案。您将学习如何使用UserDefaults进行简单的偏好设置存储,如何利用文件系统进行文件读写操作。更重要的是,我们将深入讲解Core Data框架,这是苹果官方推荐的持久化解决方案,能够帮助您高效地管理应用程序中的对象图,处理复杂的数据关系,并进行数据同步。对于需要更轻量级或关系型数据库的应用,我们将介绍Realm数据库的应用,以及如何使用SQLite进行底层数据操作。 现代应用几乎离不开与外部世界的连接。本部分将详细讲解iOS的网络通信机制。您将学习如何使用URLSession进行HTTP请求,包括GET、POST等常用方法,如何处理JSON数据,如何实现图片上传和下载。我们还将探讨RESTful API的设计原则,以及如何安全地进行网络通信,如HTTPS的使用和证书验证。对于实时通信的需求,我们将介绍WebSocket等技术。 第四部分:并发与性能优化,打造流畅高效的应用 在多核处理器日益普及的今天,并发编程能力对于构建响应迅速的应用至关重要。本书将深入探讨GCD(Grand Central Dispatch)和Operation Queues,帮助您理解多线程编程模型,避免UI阻塞,提升应用的响应速度。您将学习如何合理地分配任务到不同的并发队列,如何处理线程间的同步和通信,以及如何避免常见的并发问题,如竞态条件和死锁。 性能优化是每一个优秀应用开发者都必须关注的领域。本书将引导您系统地识别和解决应用中的性能瓶颈。我们将介绍Instruments等强大的性能分析工具,帮助您定位内存泄漏、CPU占用过高、UI卡顿等问题。您将学习内存管理的最佳实践,如何有效地管理对象生命周期,如何避免不必要的内存开销。同时,我们还将探讨UI渲染性能的优化技巧,如视图层级的简化、图片的异步加载和缓存策略,以及如何利用Core Graphics和Metal进行高效的图形绘制。 第五部分:高级主题与平台特性,解锁iOS开发的无限可能 随着您对iOS开发掌握得越来越深入,本书将带领您探索更高级的主题和最新的平台特性。您将学习如何为您的应用添加地理位置服务(Core Location),如何集成ARKit进行增强现实体验,如何利用Core ML实现机器学习功能,以及如何运用HealthKit与健康数据进行交互。 安全性是移动应用开发中不容忽视的环节。我们将讲解应用程序的安全基础,包括数据加密、安全存储、用户认证以及防止常见的安全漏洞。您还将了解如何使用Keychain进行敏感信息的安全存储。 此外,本书还将覆盖一些重要的移动开发模式和最佳实践,如MVVM、MVC、Dependency Injection等设计模式的应用,以及如何进行单元测试和UI测试,确保您的应用质量稳定可靠。您还将了解到如何进行App Store的发布流程,以及如何利用TestFlight进行beta测试。 《iOS编程(第2版)》将不仅仅是一本书,更是您在iOS开发征途上不可或缺的同行者。 通过阅读本书,您将不仅仅学会“如何做”,更能理解“为什么这样做”。您将获得构建高质量、高性能、用户体验卓越的iOS应用的知识体系和实践能力。无论您是想为自己的想法赋予生命,还是希望在职业生涯中更上一层楼,本书都将是您宝贵的资源。让我们一起踏上这段激动人心的iOS编程之旅,用代码点亮创意,用应用连接世界。

用户评价

评分

作为一名长期在移动开发领域摸爬滚打的工程师,我深知一本好的技术书籍对于成长的重要性。我一直在寻找一本能够系统梳理iOS开发体系,并且能够讲解到实际开发中的最佳实践的书籍。《iOS编程(第2版)》正是我期待已久的。这本书的结构安排非常合理,从最基础的Swift语言特性到Cocoa Touch框架的深入剖析,再到一些高级主题的探讨,层层递进,逻辑清晰。我特别欣赏作者在讲解Objective-C和Swift的异同方面所做的努力,这对于需要维护老项目或者正在转型到Swift的开发者来说,非常有价值。书中对UI布局、数据持久化、网络通信等核心概念的阐述,都非常详尽,并且结合了大量的实际应用案例,这让我能够更好地理解理论知识如何在实际项目中落地。我个人对其中关于性能优化的章节特别感兴趣,因为在实际开发中,性能往往是用户体验的关键。如果这本书能够提供一些实用的优化技巧和调试方法,那将对我工作的帮助是巨大的。总的来说,这本书给我的第一印象就是专业、深入、实用,是一本值得所有iOS开发者仔细研读的工具书。

评分

我是一名iOS开发的初学者,在学习过程中常常会遇到一些概念难以理解,或者遇到问题不知道如何解决的困境。《iOS编程(第2版)》这本书,就像是我学习道路上的一盏明灯。它的语言风格非常平易近人,不会使用太多晦涩难懂的专业术语,即使是初学者也能轻松理解。作者在讲解每一个新概念的时候,都会先从一个简单的例子入手,然后逐步深入,直到我完全掌握。我尤其喜欢书中为每个章节设计的练习题,这些练习题的难度适中,能够帮助我巩固所学知识,并且在实践中加深理解。我还注意到,这本书在讲解到某些API或者框架的时候,会给出很多额外的提示和注意事项,这对于避免初学者走弯路非常有帮助。例如,在讲解如何处理用户交互时,作者就详细说明了如何正确地使用代理模式,并且举例说明了容易出错的地方。这些细节的处理,让我感觉作者真的站在读者的角度思考问题。我已经迫不及待地想要完成书中的所有练习,并且尝试将学到的知识应用到我自己的小项目中。

评分

这本书的封面设计就很有吸引力,沉静的蓝色背景搭配简洁明了的字体,一看就是一本专业书籍的风格。我拿到它的时候,就有一种想要立刻翻开阅读的冲动。虽然我接触iOS开发已经有一段时间了,但总觉得有些地方理解得不够透彻,或者说,在一些进阶的应用场景上,总感觉自己还停留在初级的阶段。《iOS编程(第2版)》的出现,恰好满足了我这种“温故而知新”的需求。我特别喜欢它在讲解基础概念时的严谨性,每一个术语都解释得非常清晰,不像有些书那样一带而过,让人看了云里雾里。而且,作者在编写代码示例的时候,也考虑得非常周全,不仅提供了可运行的代码,还对代码的每一部分都进行了详细的解释,让你明白“为什么”要这么写,而不是仅仅“怎么”写。这对于我这样喜欢刨根问底的学习者来说,简直是福音。我尤其看重它在某些复杂功能的实现上的讲解,比如多线程、网络请求优化等等,这些都是实际开发中经常会遇到的难点,如果能够得到系统、深入的指导,无疑会大大提升开发效率和代码质量。我期待着通过这本书,能够更扎实地巩固我的iOS开发基础,并且能够触类旁通,掌握更多高级的开发技巧,为未来的项目打下坚实的基础。

评分

我对iOS开发的兴趣源于对创新和用户体验的追求,而《iOS编程(第2版)》恰好满足了我在这方面的学习需求。这本书不仅涵盖了iOS开发所需的核心技术,更重要的是,它强调了如何构建优雅、高效、可维护的应用程序。我特别欣赏作者在讲解面向对象设计原则和设计模式时的清晰度,这些抽象的概念在书中变得具体而易懂,并且通过大量的代码示例展示了它们在实际项目中的应用。书中对于Swift语言特性的深入讲解,也让我对这门现代编程语言有了更全面的认识,比如泛型、协议扩展等,这些都极大地提升了代码的复用性和可读性。我还在书中看到了关于自动化测试和持续集成的介绍,这对于培养良好的开发习惯至关重要。通过阅读这本书,我不仅能够掌握开发技能,更能学习到成为一名优秀iOS开发者的思维方式和工程实践。我深信,这本书将成为我iOS开发旅程中不可或缺的指南。

评分

老实说,我平时很少主动去购买技术书籍,因为很多网上资源已经足够丰富了。但《iOS编程(第2版)》的口碑确实太好了,周围的朋友都在推荐,我抱着试试看的心态入手了一本。拿到书后,我首先就被它的内容深度所震撼了。这绝对不是一本浅尝辄止的书,它在很多细节上的挖掘都做得非常到位。例如,在讲解内存管理时,作者不仅说明了ARC的工作原理,还深入探讨了循环引用的各种场景和解决方案,并且给出了很多避免犯错的建议。这一点对于我这种长期写代码的人来说,非常具有指导意义。我还发现,这本书在讲解一些第三方库的集成和使用时,也提供了非常实用的方法,并且对库的内部机制进行了剖析,这让我不再只是“调用者”,而是能更深层次地理解它们。此外,书中对测试和调试的讲解也让我印象深刻,这表明作者非常注重代码的质量和可靠性。总而言之,这是一本能够帮助开发者提升内功,并且解决实际问题的宝藏。

评分

有些介绍不够详细,如GCD多任务处理部分。

评分

书本身的内容也不错,覆盖的面很广。

评分

非常不错,送货快,质量好

评分

内容比较简单,适合初学者...内容还不错

评分

学习中,经典。推荐收藏!

评分

还没仔细看,应该不错的

评分

都是代码的教授,不错,比拖拽的是在。

评分

物流很给力,书的内容深度刚刚好!

评分

很好,在学习,希望能多找到有用的东西

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有