Leo的专栏

https://github.com/LeoMobileDeveloper

排序:
默认
按更新时间
按访问量

iOS编译过程的原理和应用

前言 一般可以将编程语言分为两种,编译语言和直译式语言。 像C++,Objective C都是编译语言。编译语言在执行的时候,必须先通过编译器生成机器码,机器码可以直接在CPU上执行,所以执行效率较高。 像JavaScript,Python都是直译式语言。直译式语言不需要经过编译的过程,而是...

2016-12-10 11:58:12

阅读数:21467

评论数:9

实现一个优雅的iOS事件总线

目标 订阅登录事件LoginEvent,当self dealloc时候自动取消订阅 [QTSub(self, LoginEvent) next:^(LoginEvent *event) { }]; 订阅通知NSNotification,当self dealloc的时候自动取消订阅 ...

2018-07-12 22:33:40

阅读数:556

评论数:0

深入理解iOS Crash Log

Crash Log Crash Log的主要来源有两种: Apple提供的,可以从用户设备中直接拷贝,或者从iTunes Connect(XCode)下载 三方或者自研Framework统计,三方服务包括Fabric,Bugly等。 这篇文章讲到的Crash Log是Apple提供的。 ...

2018-07-06 21:11:36

阅读数:538

评论数:3

XCode启动参数和环境变量

前言 这一部分介绍XCode中Argument/Options模块,通过这两个模块,我们可以在启动App的时候传递一些额外的参数进去,覆盖系统的默认值,从而实现特定场景的调试。 Options Options这里的内容相对简单,但是却容易被忽略。 Core Location用来模...

2018-06-30 12:54:57

阅读数:412

评论数:0

Safari/Chrome调试WebView

前言 最近在写《iOS代码调试》系列的博客,估计会有十篇以上的内容,等到都写完了会在Github开源出来,欢迎关注我的Github: LeoMobileDeveloper WebView 大多数App会选择H5去实现某些弱交互但是却需要热更新界面,这时候WebView就派上用场了,那么...

2018-06-17 21:51:07

阅读数:576

评论数:0

深入理解Toll-Free Bridging

前言 Toll-Free Bridging本身不是什么新技术,那为什么还要写这篇博客呢? 原因是今天和一个同事讨论到相关问题的时候,发现理解并不够深入,于是仔细研究了下,整理成了这篇博客。 本文的Github地址:LeoMobileDeveloper Toll-Free Bridgin...

2018-04-26 15:28:28

阅读数:314

评论数:3

iOS汇编精讲(上篇)

前言 日常的应用开发中,主要用的语言是Objective(Swift),一些特殊场景下,可能还会用到C/C++,JavaScript,Shell,Python等。 那么,一个iOS开发者为什么要了解汇编这么底层的语言呢? 因为看得懂汇编能够提高的代码调试和逆向能力。 本文是作者学习...

2018-04-21 12:11:32

阅读数:559

评论数:2

Sqlite的事务,锁和WAL模式

前言 事务定义了一组SQL语句的边界,这组SQL语句要么都执行,要么都不执行,事务保证了数据库完整性中的原子性。事务与数据库锁是紧密相关的,Sqlite用锁来保证事务的并发和执行顺序。 事务 在讲解事务的原理之前,我们先看看事务相关的API,主要有三个: begin transact...

2018-03-21 22:49:14

阅读数:313

评论数:0

Objective C范型

范型 范型编程是一种程序语言设计范式,它允许程序员在使用强类型的语言编写代码的时候,延迟确定具体的类型。 以Swift代码为例,假如有一个需求是要交换两个int,很容易写出类似代码 func swapTwoInts(_ a: inout Int, _ b: inout Int) { ...

2018-01-07 14:51:16

阅读数:649

评论数:0

新年快乐

新年快乐

2017-12-31 21:33:10

阅读数:350

评论数:3

Fishhook替换C函数的原理

FishhookFishhook是FaceBook出品的,可以用来Hook C函数的一个开源库。它的主要接口就一个:struct rebinding { const char *name; //字符串名称 void *replacement; //替换后的方法 void **repla...

2017-11-04 16:17:48

阅读数:1662

评论数:0

深入理解iOS App的启动过程

前言 启动时间是衡量应用品质的重要指标。 本文首先会从原理上出发,讲解iOS系统是如何启动App的,然后从main函数之前和main函数之后两个角度去分析如何优化启动时间。准备知识Mach-O哪些名词指的是Mach-o Executable 可执行文件 Dylib 动态库 Bundle 无法被...

2017-10-23 13:28:28

阅读数:5315

评论数:14

聊聊SQLite - 基础篇

SQLite SQLite是一个关系型数据库,是一个嵌入式的数据库,它的核心代码由C编写,直接在宿主应用中运行。 本来想一篇长文章涵盖想写的内容,最后发现想写的东西太多了,就拆分成:基础篇,原理篇和iOS应用篇发出来吧。 MAC OS的命令行字带SQLite。以下示例均在命令行中进行,C A...

2017-09-24 15:38:39

阅读数:729

评论数:0

Moya的设计之道

前言 Moya是一个基于Alamofire开发的,轻量级的Swift网络层。Moya的可扩展性非常强,可以方便的RXSwift,PromiseKit和ObjectMapper结合。 如果你的项目刚刚搭建,并且是纯Swift的,非常推荐以Moya为核心去搭建你的网络层。另外,如果你对Alamof...

2017-08-11 13:44:52

阅读数:4222

评论数:21

实现60fps的网易云音乐首页

前言网易云音乐是一款很优秀的音乐软件,我也是它的忠实用户。最近在研究如何更好的开发TableView,接着我写了一个Model驱动的小框架 - MDTable。为了去验证框架的可用性,我选择了网易云音乐的首页来作为Demo,语言是Swift 3。本文的内容包括: 实现网易云音乐首页的思路 如何建立...

2017-07-28 14:38:34

阅读数:2955

评论数:3

理解网络分层与数据加密

网络分层网络的基础分层是OSI的七层架构: OSI的全称是Open System Interconnection(开放系统互联模型),是由国际标准化组织ISO设计,解决不同体系结构网络互相连接的问题。 实际应用中,五层架构是最常见的,也是最容易理解的:网络分层后,每一层都工作着不同的协议和实际...

2017-07-22 20:29:34

阅读数:1207

评论数:0

优雅的开发TableView

前言UITableView(UITableViewController)是iOS开发使用频率最高的一个组件。不管是使用UITableView还是还是UITableViewController,在开发的时候,我们都需要实现两个协议: UITableViewControllerDataSource U...

2017-06-19 11:57:34

阅读数:3288

评论数:5

MVVM与Controller瘦身实践

前言MVC是一个做iOS开发都知道的设计模式,也是Apple官方推荐的设计模式。实际上,Cocoa Touch就是按照MVC来设计的。这里,我们先不讲MVC是什么,我们先来谈谈软件设计的一些原则或者说理念。在开发App的时候,我们的基本目标有以下几点: 可靠性 - App的功能能够正常使用 健壮性...

2017-06-12 11:20:19

阅读数:6563

评论数:2

Alamofire的设计之道

前言:Alamofire是一个由Swift编写的优雅的网络开发框架。大部分用Swift编写的iOS App的网络模块都是基于Alamofire的。作为Swift社区最活跃的几个项目之一,有许多开发者在不断的对其进行完善,所以学习这种优秀的开源代码对深入理解Swift的特性很有帮助。

2017-06-03 18:54:52

阅读数:7028

评论数:3

消息转发机制与Aspects源码解析

前言最近在搞重构相关的事情,遇到了不少这样的场景: 进入一个界面,在viewWillAppear:的时候做相应判断,如果满足条件则执行对应代码。 这类业务有一个特点,业务内容是对应整个App的,与对应的ViewController毛关系都没有,但是却不得不耦合到(即使是调用代码可以精简到一行)...

2017-05-22 22:55:51

阅读数:2745

评论数:0

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