标签: xcode

*新iOS开发底层重点,iOS技术点+面试题整理!

以下是小编收集总结的iOS技术点+面试题分类;看看你都会了吗?

重点总结-四大分类:

iOS底层原理
性能优化以及架构
多线程、网络
数据结构算法
iOS底层原理(必问):iOS开发必备能力,也是大厂面试快速筛选人才方式之一。

对象底层原理
指针与内存的一些相关面试
Weak 弱引用
Block 的原理
AutoreleasePool 原理
Runloop 的原理
Runtime相关、消息转发原理…
组件化
常问例题:

1. 什么情况使用weak关键字,相比assign有什么不同?
2. 深拷贝与浅拷贝
3. 简要说一下@autoreleasePool的数据结构?
4. autoreleasePool 在何时被释放?
5. 说一下iOS内存分区情况
6. 如何解决循环引用?
7. Runloop 和线程的关系?
8. isa指针的理解,对象的isa指针指向哪里?
9. Runtime 如何实现 weak 属性?
10. load和initialize的区别
11. ……

性能优化以及架构能力:目前大厂对于这一块,非常重视;

①性能优化方面:tableView的优化 -> 界面卡顿原理 -> app 性能分析 -> 项目优化

②架构方面:设计模式、解耦手段、组件化…

常问例题:

1. 造成tableView卡顿的原因有哪些?
2. 如何提升 tableview 的流畅度?
3. APP启动时间应从哪些方面优化?
4. 如何降低APP包的大小?
5. 日常如何检查内存泄露?
6. iOS有哪些常见的设计模式?
7. 单例会有什么弊端?
8. MVC、MVP、MVVM模式
9. 编程中的六大设计原则?
10. ……

 

多线程、网络能力:iOS中高级开发,都应该了解,并且熟悉的知识点;

多线程的原理
线程池
GCD
锁相关原理
网络设计
网络框架的理解
开发过程中一些需求结合多线程或者网络设计!
常问例题:

1. 进程与线程?
2. 什么是多线程?
3. 多线程的优点和缺点?
4. 多线程的 并行 和 并发 有什么区别?
5. 多线程中的死锁?
6. GCD执行原理?
7. 网络的七层协议?
8. Http 和 Https 的区别?Https为什么更加安全?
9. 解释一下 三次握手 和 四次挥手?
10. Cookie和Session
11. ……

数据结构算法能力占比比较大:通常一般大公司都会有一些笔试:虽然不在核心岗位对于数据结构算法要求不是非常严格,但是也会有一些常规的数据结构和算法的题

排序
数据结构设计
复杂度讨论
一些脑筋急转弯的算法题

常问例题:

1. 链表和数组的区别是什么?插入和查询的时间复杂度分别是多少?
2. 哈希表是如何实现的?如何解决地址冲突?
3. 排序题:冒泡排序,选择排序,插入排序,快速排序(二路,三路)能写出哪些?
4. 链表题:如何检测链表中是否有环?如何删除链表中等于某个值的所有节点?
5. 数组题:如何在有序数组中找出和等于给定值的两个元素?如何合并两个有序的数组之后保持有序?
6. 二叉树题:如何反转二叉树?如何验证两个二叉树是完全相等的?
7. 数据结构的存储一般常用的有几种?各有什么特点?
8. ……

ios开发:Xcode8制作framework及使用

前言
网上关于Framework制作的教程数不胜数,然而都过于陈旧,*新的也是使用Xcode7的教程,而且有些设置也只给出步骤,并没有给出原因,而且按照有些教程制作出的framework还有些问题,所以我把自己制作framework的过程记录下来,并且使用的是*新的Xcode8环境。

正文
首先新建一个项目,选择Cocoa touch Framework

然后随便取一个名字

然后将要封装成framework的代码拖入工程

选择工程文件>target*项>Build Setting>搜索linking,然后几个需要设置的选项都显现出来,首先是Dead Code Stripping设置为NO,网上对此项的解释如下,大致意思是如果开启此项就会对代码中的”dead”、”unreachable”的代码过滤,不过这个开关是否关闭,似乎没有多大影响,不过为了完整还原framework中的代码,将此项关闭也未曾不可。

The resulting executable will not include any “dead” or unreachable code

然后将Link With Standard Libraries关闭,我想可能是为了避免重复链接

*后将Mach-O Type设为Static Library,framework可以是动态库也可以是静态库,对于系统的framework是动态库,而用户制作的framework只能是静态库。

然后将需要公开的头文件从Project中拖入Public,至于是否需要将私有的头文件拖入Private,我觉得直接放在Project中即可,若是Private中有头文件,打包以后的framework中会多出一个Private的文件夹包含着放入Private的头文件,不过我觉得如果是私有*好还是不要让别人看到。

为了对一些特殊机型的支持,添加armv7s架构,当然不添加也没什么问题,只有5和5c使用了此架构。

下面就开始编译了,先选择Generic iOS Device,按下Command+B:Build一下

然后随意选择一个模拟器再次Build一下

找到Build后的framework

我们看到总共有两个文件夹,上面是真机编译生成的文件,下面是模拟器编译生成的文件。

然后用命令行将下面两个文件进行合成

将合成后的文件输出到桌面之上,这里解释一下这看似很复杂的命令:lipo -create +上面两个文件的路径 + -output + 合成后文件的输出路径

然后用输出在桌面上的YuXinSDK替换掉前面Debug-iphoneos中framework中的YuXinSDK

将这做好的framework直接拖入要使用的工程中

注意将Copy items if needed打勾

然后在工程的search path中加上此framework的Headers的路径

本以为大功告成,按下了Command+R悠闲的等着编译运行,然而在链接的时候却出了问题

很经典的错误,库中缺少了i386架构的文件,这时我就比较困惑了,明明将模拟器生成的库文件合并进来了,怎么在模拟器上编不通呢!用lipo命令查看一下,果然没有i386架构的文件

再看一下用模拟器生成的framework

居然只有x86_64架构

我换成iPhone 4s模拟器,编译后生成的文件居然包含了i386

经过我的测试,在iPhone5之前编译的framework都是i386架构,iPhone 5s之后都是x86_64架构,然而在所有模拟器上运行时,这两种架构缺一不可,然后我将这两种架构的framework合并在与真机的合并

拖入工程后终于能够正常运行了

后来经过摸索发现之前按照网上的教程却把自己坑了

开始将上图中的选项设为YES,导致其编译时只生成当前机器的框架,将其设置为NO后,发现用模拟器编译后生成的framework同时包含x86_64和i386架构。

bitCode错误
在项目中引入静态库后,archive的时候又会出现错误

bitcode bundle could not be generated because … was built without full bitcode.All object files and libraries for bitcode must be generated from Xcode Archive or Install build for architecture arm64
1
Bitcode是苹果在Xcode7及以后推出的新功能。用于代码的二次编译,针对CPU进行优化,编译工作由苹果AppStore后台来完成。
针对iOS是可选项,默认打开。watchOS 和 tvOS 是必选项。

所以需要打开库工程的此选项并加上-fembed-bitcode参数,重新编译

如此archive时就不会出问题了,到此我在制作使用framework时遇到的问题都在这里了。

总结
架构
对于模拟器来说4s和5的模架构是i386的32位架构,5s至今是x86_64的64位架构。对于真机来说3GS~4s是armv7架构,5和5c是armv7s架构,5s至今是arm64架构

静态库
静态库: 链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。

动态库
动态库:链接时不会拷贝至可执行文件中,运行时动态加载进内存,供程序调用,只加载一次,多个程序可以共用。

IOS已解决 在构建版本上传后, 一直处于处理状态

今天上传 iTunes connect ,遇到一个问题,结果网上搜到一个解决方案,先和大家共享下,据说有人这样解决了问题,

应用程序上传app的时候有一个构建版本, 我上传了的版本但是哪个都选不了 ,一直显示正在处理!百度查到重新上传就好了,应该是以前上传的因为网络原因没有上传完整!

ipa砸壳解析出头文件

说明

  • 在越狱的iOS设备上,解析UCWeb应用的头文件

直接将从苹果商店上下载的ipa导出头文件

class-dump -H UCWEB.app -o UCWEB

由于该ipa文件加了壳,不能解析出头文件。

砸壳

使用dumpdecrypted工具
下载地址:https://codeload.github.com/stefanesser/dumpdecrypted/zip/master
下载后解压,然后cd到该目录下,执行make命令进行编译

  1. `xcrun –sdk iphoneos –find gcc` -Os -Wimplicit -isysroot `xcrun –sdk iphoneos –show-sdk-path` -F`xcrun –sdk iphoneos –show-sdk-path`/System/Library/Frameworks -F`xcrun –sdk iphoneos –show-sdk-path`/System/Library/PrivateFrameworks -arch armv7 -arch armv7s -arch arm64 -c -o dumpdecrypted.o dumpdecrypted.c
  2. `xcrun –sdk iphoneos –find gcc` -Os -Wimplicit -isysroot `xcrun –sdk iphoneos –show-sdk-path` -F`xcrun –sdk iphoneos –show-sdk-path`/System/Library/Frameworks -F`xcrun –sdk iphoneos –show-sdk-path`/System/Library/PrivateFrameworks -arch armv7 -arch armv7s -arch arm64 -dynamiclib -o dumpdecrypted.dylib dumpdecrypted.o

显示如上内容,编译成功。
make命令执行完毕后,会在当前目录下生成一个dumpdecrypted.dylib文件,这就是我们等下砸壳所要用到的榔头。此文件生成一次即可,以后可以重复使用,下次砸壳时无须再重新编译。

上传文件

ssh连接到手机(我的手机ip地址是192.168.1.181)

ssh [email protected]

执行命令,找到所有进程

ps -e | grep var 

查找到uc的路径
/var/mobile/Containers/Bundle/Application/78241EAF-781C-475C-BA53-84EF7C4FE23D/UCWEB.app/UCWEB

进入/var/mobile/Containers/Bundle/Application/78241EAF-781C-475C-BA53-84EF7C4FE23D/UCWEB.app路径下
利用cycript工具勾住UCWEN应用

cycript -p UCWEB

执行代码

[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]

获取当前应有的Document目录,然后进入到当前Document目录下。
将我们刚刚编译好砸壳工具dumpdecrypted.dylib上传到该文件夹下。

scp dumpdecrypted.dylib [email protected]:/var/mobile/Containers/Data/Application/72D29CE0-C288-4BEB-B319-41595DA3F64A/Documents/dumpdecrypted.dylib

提示输入密码,输入手机root密码,然后提示上传进度。

dumpdecrypted.dylib                                                               100%  193KB 192.9KB/s   00:00 

开始砸壳

  1. DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/78241EAF-781C-475C-BA53-84EF7C4FE23D/UCWEB.app/UCWEB
  2. mach-o decryption dumper

会生成app砸壳后的文件xx.decrypted. 这里就是 UCWEB.decrypted

文件导出到电脑

  1. root# scp UCWEB.decrypted [email protected]:/private/tmp
  2. Password:
  3. UCWEB.decrypted 100% 193KB 192.9KB/s 00:00

导出头文件

使用class-dump工具导出头文件

class-dump -H UCWEB.decrypted  -o output/

*好放一张解析成功的图片,可以看到右6502个文件(包含第三方sdk的类)。分析应用的头文件基本可以了解应用如何搭建。

 

%title插图%num

Ad_Hoc方式打包iOS应用程序

如果想要将做的iOS应用程序安装到自己的iOS设备上测试、或者安装到别人的iOS设备上,或者想发布到App Store中,先要给应用签名。签名就要有证书,这就需要申请证书的过程了。
把自己的应用程序安装到设备中,主要有一下几种方式:
1、 把iOS设备与电脑连接起来,如果Xcode中已经添加了包含这个设备的Profile文件且在工程中已经选择了该文件,那么在Xcode左上角便可以选择这个设备,之后点击RUN,程序就被安装在这个iOS设备中了。这个主要用于在真机上测试程序。
2、 使用Xcode将应用程序以Ad Hoc方式打包,到处ipa文件,然后用iTunes等工具将应用程序安装到iOS中。这种方式的Profile文件主要是Ad Hoc类型,并且包含制定的设备信息。导出的ipa也只能安装到制定的设备中。
3、将应用程序发布到App Store上,待苹果审核通过后,其他人就可以下载安装了。
本文主要讲第二种方法。
制作Profile文件需要经过“添加证书—添加App ID—添加设备—制作Profile文件”四个步骤,下面将分别进行介绍。

**

一、添加证书

%title插图%num

%title插图%num

%title插图%num

%title插图%num

**

接下来要制作一个CSR文件

首先打开钥匙串

%title插图%num

%title插图%num

%title插图%num

%title插图%num

%title插图%num
证书制作完成

**

二、添加App ID
**

%title插图%num

%title插图%num

%title插图%num

%title插图%num
**

三、添加设备
**

%title插图%num

%title插图%num

%title插图%num
**

四、制作Profile文件
**

%title插图%num

%title插图%num

%title插图%num

%title插图%num

%title插图%num

%title插图%num

%title插图%num
**

五、Ad_Hoc方式打包
**

%title插图%num

%title插图%num

%title插图%num

%title插图%num

%title插图%num

%title插图%num

%title插图%num

 

自学 iOS 开发的一些经验

不知不觉作为 iOS 开发也有两年多的时间了,记得当初看到 OC 的语法时,愣是被吓了回去,隔了好久才重新耐下心去啃一啃。啃了一阵,觉得大概有了点概念,看到 Cocoa 那么多的 Class,又懵了,怎么才能调用系统的相机?怎么保存信息?怎么做一个像 Twitter 个人页那样的页面?总之就是不知道该从哪切入。

现在回想起来,其实路一直都在,而且有很多条,当初如果有人能够指出一条还不错的道,或许就能走得不那么艰难。于是就有了这篇文章,希望对后人能有所帮助吧。

基础

一定的编程经验

这里说的编程经验是至少熟练一门编程语言,对 OOP 有一定的了解,*好熟悉一些基本的设计模式。遇到过的好多 iOS 开发,大多是从别的语言转过来的,所以有一定的编程基础,学起来会更容易 get the point.

如果是*次接触编程,当然也是没问题的,只是要做好心理准备,可能会比想象的难。

英语

发现不少开发对于英语似乎有点接受不能,通常都是中文优先,除非迫不得已,才硬着头皮看看 StackOverflow,英文文章,文档等。忘了是谁说过「难走的路越走越好走」,通常如此。其实只要稍微 push 一下自己,那些技术文章啃下来应该不会有太大的问题,有过几次成功的体验后,这种恐惧感就会减少很多。优质的文章、视频、书籍,多是英文的,不迈过这个 坎,将来要么成为瓶颈,要么花更大的成本去填补。

入门

书籍

要学习 iOS 开发,自然要先学 Objective-C (当然现在也可以直接上 Swift,不过如果多人协作的话,OC目前还是主流),因为 OC 是 C 语言的超集,所以了解 C 语言对于学习 OC 肯定会有帮助,不过就算不了解,直接学 OC 也没太大问题。

这里推荐 BNR (Big Nerd Ranch) 的这本 Objective-C Programming The Big Nerd Ranch Guide,讲解地比较细致,能帮助你更好的理解 OC,更重要的是教你遇到问题时,如何去解决问题,以及这个问题对应的一些知识点,如何使用文档等等。

来到一个新的世界,肯定会对这个世界充满好奇,想订阅一大堆博客,买一堆书,看各种教程和视频,然后就变得浮躁,不知该从哪下手,这会导致拖延症。 我渴了,给我倒一杯水,这个很直接,马上就可以做,但如果是给我买一瓶饮料,而自己对那些饮料又不怎么熟悉时,就纠结了,不如刷会微博,看看朋友圈,玩个小游戏先。

所以一本好的入门教材很重要,要契合自己当前的水平,且常常会有收获,这种成就感会激励着你继续学下去。

在看书的过程中,往往会有这样的经历:书中提到某个人、观点、知识点、书、文章,然后就顺着它提到的这些东西出去了,可能某个知识点又牵扯到另一些内容,然后就这样越走越远。想起了一个故事——

三只猎狗追一只土拔鼠,土拔鼠逃跑时钻进了一个树洞。这个树洞只有一个出口,不一会儿,忽然从树洞里跑出一只兔子。兔子飞快地向前跑,并爬上另一棵大树。兔子因为慌乱在树上没站稳,掉了下来,砸晕了正仰头看的三只猎狗,*后,兔子终于逃脱。

对于这个故事可以从不同的角度去解读,我更愿意以初心去解读。兔子为什么会爬树?为什么能砸晕三只猎狗?这不是重点,重点是,之前追赶的土拨鼠哪去了?看书时难免会有延伸阅读,这个深度我觉得不宜超过 2 层,不然很容易就回不来了。

还有就是如果有可能,*好每天都看点,这其实是很难的,因为总是会有优先级更高的事,或者之前的某些习惯在干扰。一旦断了几天,就不想再拿起来了。

还有,苹果官方的 Start Developing iOS Apps Today 也是很不错的入门材料。

视频

推荐斯坦福老头子(Paul Hegarty)的 Developing iOS 7 Apps for iPhone and iPad ,当初也是看的这个(那时还是更老的版本),Paul 是资深的 Mac/iOS 开发(前苹果员工?),很多知识点讲得很到位,学生们的提问也大都在点上,同时配有Demo,总之听下来会对 iOS 开发有比较全面的了解。

同时推荐一本小册子:objc-zen-book,花不长时间就能看完,里面是一些 Best Practices,对于编写优质代码会很有帮助。

笔记

这是一个持久的过程,任何阶段都适用。以前也没太在意这个,觉得概念性的东西,脑子过一遍,就大概知道了,然后就去啃其他的东西了,现在看来,如果有记笔记的话,会更有助于消化概念、知识点,也可以记录自己的思考过程。达芬奇就记录了10000多页的笔记。

记笔记可以加深对知识点的理解,而成为编程巨星的唯一秘诀就是:对所做的事情理解地越深,就会做得越好。同时如果遵循遗忘曲线去复习的话,效果更佳。对知识点了解地足够透彻后,Debug 时才更有可能知道问题出在哪,解决问题也更容易有思路。

笔记不仅可以记知识点,也可以记录调试过程,比如这篇笔记,有一种调试方法:小黄鸭调试法

许多程序员都有过向别人(甚至可能向完全不会编程的人)提问及解释编程问题,就在解释的过程中击中了问题的解决方案。一边阐述代码的意图一边观察它实际上的意图并做调试,这两者之间的任何不协调会变得很明显,并且更容易发现自己的错误。

生活中我们可能不会真的这么去做,这时抽离出另一个自己,记录下跟ta的对话,也是个发现问题的好方法。

练习

这也是一个持续的过程,知道了些概念或原理后,总是会想着去验证下是不是这样,无论结果是否如自己预期,实践的过程会降低对语言的陌生感,慢慢地培养一种驾驭这门语言的自信,如果出了错,正好可以重新梳理一下。

目标

如果静下心来看完了 BNR 的这本书,以及斯坦福的 iOS 开发视频,那么对 OC 应该比较了解了,一些常用的 UIKit 用起来也没什么问题了,比如 UIViewController / UIView / UIScrollView / UIImageView / UITableView。也熟悉一些概念,如 KVO / MVC / Delegate / DataSource。

这个阶段下来,应该会有:哦,iOS 开发也就这样嘛,多翻翻文档,熟悉 Cocoa Touch 的一些 Class,差不多也能做出一个简单的 App 了。

进阶

入门之后,接下来可以折腾的东西还会有不少。

书籍

Effective Objective-C 2.0,里面提到了 52 种提高 iOS App 质量的途径。涉及了 API 设计、protocols / category 的使用、写出更模块化的代码等,读下来应该会有不少收获。

iOS Programming: The Big Nerd Ranch Guide (4th Edition),又是一本 BNR 的书,这本书的特点是通过 Demo 来引出知识点,然后提一些问题,并且会细说解题思路。看书的过程中,对于元学习能力的提升也会有一定帮助。

— update —

发现巧哥的 iOS开发进阶 已经可以在京东买到了,虽然没有细看,但巧哥出品质量肯定有保障。

其他资源

进入这个阶段后,可以去探索更大的世界了,现在的资源已经很丰富了,但还是要遵循「少而精」的原则。以下是我觉得挺不错的资源

iOS Dev Weekly 每周一期,内容多为这一星期里值得关注的Github项目、文章、工具等。

iOS 移动开发周报 这是唐巧大大整理的每周不错的 iOS 开发相关的内容,多为中文。

RayWenderlich 很多详细又全面的教程,不容错过。

iOS Dev Slack 国内不少 iOS 开发(包括大大们)都在这里,不过现在好像不怎么能拿到邀请了。

中文 iOS/Mac 开发博客列表,打开工具订阅吧。

还有,如果可能的话,多去分享自己学到的东西,教是*好的学,我试过几次,效果真的很不错。

目标

这个阶段下来,对于常用的设计模式、内存管理、Blocks 的使用、图像操作、网络请求和管理、多线程应该比较熟悉了。对于 CALayer、Animation、UIScrollView、UITableView、UICollectionView、 ViewController Container 则非常熟悉,对「非常熟悉」的定义是:不打开 Xcode,脑子里就能把相应的知识点复述出来 80% ,比如这个类有哪些方法,Delegate / DataSource 有哪些方法,怎么使用,如果要实现某个效果,应该怎么做(好吧, UICollectionView 除外)。

高级

其实高级、进阶、入门并没有严格的界限,在入门阶段也可以探究高级阶段的一些东西。我觉得支撑我们不断探索和前进的动力不是兴趣,而是永不满足的好奇心,和对优雅代码的追求。

If your standards are low, you’re going to stop pretty early on in the process.

BNR 的这篇 Leveling Up 已经讲得很好了,也更加细致。

书籍

iOS 7 Programming Pushing the Limits 这本书对 iOS 7 的一些特性会讲解地比较深入,当然也不仅仅是 iOS 7。只叹 iOS 更新实在太快,书籍往往跟不上,一本好书往往需要很长时间来撰写,等书可以出版了,iOS 又出新版本了。

源码

看优秀的源码,可以学到很多东西,使用过程中遇到问题也更容易解决。这些是我觉得值得细看的源码:AFNetworking(NSOperation, HTTP, Block), SDWebImage(Image Handle, Cache, NSOperation, Block),SVPullToRefresh(UIScrollView, State Handle), JSONModel(runtime)

如果有兴趣,也可以翻翻 CoreFoundation / OC runtime 的源码。

资源

oleb

NSHipster

objc.io || objcio.cn

WWDC 视频

工具

chisel Facebook 出品的 LLDB 助手,用于调试很方便

Reveal 每当好奇某个 App 的实现时,都会打开它一窥究竟,用于调试自己的 App 也很方便

Aspects steipete 大大出品的一款方便使用 method swizzling 的工具,可以在运行时动态添加代码到某个方法

class-dump 从 Mach-O 文件生成 OC 头文件,有时想看看某个 App 大概是如何组织的会比较方便

Hopper 可以对二进制文件进行反编译,甚至可以生成伪代码!有时想看看 UIViewController 里某个方法大概是怎么实现的,就可以用它。

Instruments 这个内置的工具对于发现 App 的各种问题很有帮助,如内存占用、泄露,渲染问题等。

目标

这个阶段,对于底层的实现会有更深入的了解,各种 Core 开头的 Framework 至少可以说出个大概,工具也能熟练使用,「正经的代码」写过数万行,可能天天在翻 Dash。如果别人让你实现某个功能,能在较短的时间内给出不错的实现方案,并且足够细致,甚至精细到如何使用 Core Graphic 去画某个图像。

其他

我觉得无论学习什么,「速成」的心态是*要不得的,这只会让自己变得浮躁,一知半解,整个过程也很难让自己的元学习能力得到提升。慢慢来,攻占一个城后,再去打下一个,这时心态也会平和许多。

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速