自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TuGeLe的博客

开放协作 追求卓越 知行合一 不忘初心

  • 博客(14)
  • 收藏
  • 关注

原创 RxJava解析

RxJava解析RxJava的核心思想是通过链式调用使得异步代码调用变得简洁方便。看了网上其他一些介绍RxJava调用的文章时,对其使用和实现原理还是理解不到位,最后通过分析源码的调用弄明白了链式调用和线程切换的实现方式。本文章的内容分为三个部分:一、基本的调用方式 二、链式调用 三、线程切换一、基本的调用方式链式调用的实现:之所以能实现链式调用,是因为每个函数返回的对...

2018-08-31 16:16:22 305

原创 非越狱逆向开发总结文档(含iOS Extension)

在经过越狱开发之后,我开始了接触非越狱开发。 相比之下,他们之间有很多相似点:比如都是通过砸壳以后的IPA包去dump头文件来进行分析,分析代码逻辑之后去hook对我们有用的类做一些自己的事情,封装成动态库后注入到包内的二进制Mach-O文件中,在程序dyld的时候加载到程序的内存中运行。 而不同的是非越狱情况下会出现很多权限的限制,不能够对一些系统级别...

2018-08-20 23:32:29 1571

原创 颜色量子化(K-Means聚合算法以及八叉树的运用)

颜色量子化,又可以理解为图像主要颜色提取或者由图像生成调色板。归根结底,就是对一组颜色进行筛选处理,进而选择出其中具有代表性的N个颜色。下面我们从两个应用场景来对该主题进行讲述:一、图像主要颜色提取假设场景现在假设一种场景:从一张图片中提取n个主要颜色。该场景下颜色的量子化可以使用聚合算法,集合算法是一种用于把一组数据进行分类为几个分组的算法。在我们设想的场景中,就是将一组...

2018-08-16 17:27:46 2838

原创 iOS app main方法之后做的操作

在iOS开发中,我们都知道,程序的入口是main()函数,位于main.m中。通常情况下,main()函数中的代码是不需要修改的。那么,main()函数中做了哪些操作呢?main函数的实现在Xcode中新建一个工程之后,Xcode会自动的帮我们生成main.m以及main()函数,main()函数通常是这样的:int main(int argc, char * argv[]) ...

2018-08-12 20:42:21 1683

原创 dyld在app启动过程中的作用

在前面的文章中介绍过,app启动过程中,首先是操作系统内核进行一些处理,比如新建进程,分配内存等。在iOS/Mac OS系统中,操作系统内核是XNU。在XNU完成相关的工作后,会将控制权交给dyld。dyld,即动态链接器,用于加载动态库。dyld是运行在用户态的,从XNU到dyld,完成了一次内核态到用户态的切换。那么,后续dyld做了哪些事情呢?幸运的是,dyld是开源的,我们通过分析dyld...

2018-08-12 19:39:58 2899

原创 XNU加载Mach-O和dyld

我们知道,操作系统是电脑、手机上最基本的软件,任何其他的软件都必须在操作系统的支持下才能够运行。同理,软件的启动也必须在操作系统的支持下才能够运行。对于iOS系统来说,操作系统内核是XNU(X is not Unix),那么在一个app的启动过程中,XNU发挥了什么作用呢?本篇文章,我们来探究一下这个问题。XNU启动launchdXNU的代码是开源的,可以从苹果开源代码平台上下载XNU...

2018-08-09 21:11:29 1253

原创 macOS && iOS系统结构

系统名称介绍macOS,2012年前称之为Mac OS X,2012 - 2016年称OS X,2016年起称macOS,是苹果公司推出的图形用户界面操作系统。iOS,原名iPhone OS,后改为iOS。是苹果公司为移动设备所开发的移动操作系统。无论是iOS还是macOS,都是类Unix操作系统。系统名词解释在学习iOS、macOS系统结构时,如果没有充分的了解,常常会被一些名词...

2018-08-09 21:07:46 1462

翻译 理解崩溃和崩溃日志(WWDC 2018 session 414)

WWDC 2018 session 414: Understanding Crashes and Crash Logs每个人在写代码的时候,或多或少都会犯错。有的错误就会导致程序崩溃,这非常影响用户体验。本session主要介绍崩溃的原理,他们为什么会发生,以及如何查看、分析崩溃日志,找到并解决问题。基础知识崩溃是什么?崩溃指的是应用程序在尝试执行不允许的操作时,突然中止的...

2018-08-08 19:32:47 1858

翻译 通过优化App来适应网络(WWDC 2018 session 719)

该篇博客记录了观看WWDC Session714《Optimizing your app for today’s internet》的内容以及一些理解。全球移动数据一、全球有大约40亿人在使用互联网这个数字超过了世界人口的一般在全球范围内,使用人数的增长率正在减缓二、互联网整体还是发展的机器到机器、物联网、只能家具都在发展中国、印度互联网也在发展智能手机、移动数...

2018-08-06 19:34:07 1199

翻译 iOS内存的深入探究(WWDC 2018 session 416)

WWDC 2018 session 416: iOS Memory Deep Dive概述首先设备硬件资源是固定的,所以app的内存资源是有限的。较低的内存占用可以提高用户体验以及性能。如果内存占用过大,可能会被系统杀掉。所以每个开发者都应该注意内存问题。本session主要分为以下几方面:为什么要减少内存占用内存占用分析内存占用的工具图像在后台时,对内存的优化...

2018-08-06 19:18:06 2158

原创 iOS中对于NSString变量引用计数的分析

该篇博客主要讨论在Objective-C中对于NSString变量的引用计数的不同处理。为了在测试中打印方便,我们可以简单的定义一个宏:#define MDMLog(str) ({NSString *name = @#str; NSLog(@"%@-->%@ %p, %zd", name, [str class], str, [str retainCount]);})以下内容...

2018-08-06 17:10:36 1261

原创 iOS非越狱逆向分析实战

本次实战的根本目的,是为了分析竞品,优化自身产品的用户体验。在我们之前版本中,增加了GIF制作的功能,用户可以拍摄视频、照片或者从相册选择视频、照片等来合成GIF图,并可以给GIF添加贴纸、文字,以及修改GIF速度的功能。最初,我们通过ffmpeg进行GIF的合成,由于中间有一系列的操作,为了保证图片质量,我们不得不做一些耗时的操作,导致合成速度慢,用户体验非常差。与此同时,我们发现了市面上...

2018-08-04 15:18:55 7499 4

翻译 保证应用高性能的方法(WWDC 2018 session 407)

WWDC 2018 session 407: Practical Approaches to Great App Performance简介在本 Session 中,苹果的工程师 Jon Hess 和 Matthieu Lucas 分享了如何针对 App 性能进行有效的优化,以及如何在设计上针对性能进行优化的理论与实践。其中 Xcode 团队工程师 Jon Hess 现场演示了...

2018-08-03 11:38:25 559

翻译 高效的使用集合(WWDC 2018 session 229)

该篇博客记录了观看WWDC Session229《Using collections effectively》的内容以及一些理解。该Session讲解了在Swift中高效使用集合的一些注意点。假如没有集合假如没有Arrays假如没有Arrays,我们要表示几头熊,并且打印熊的名字,需要如下代码:假如没有Dictionaries假如没有Dictionaries,我们要...

2018-08-01 19:37:54 760

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除