Leo的专栏

                                                                                  https://github.com/LeoMobileDeveloper

                                                                                  聊聊应用内购买

                                                                                  前言 上一份工作中,断断续续开发和维护了两年左右的内购,换工作后短期内应该不会做相关业务了,所以趁着“记忆”还是热乎的,写下这篇文章。 希望读者通过阅读本文能够解决一些问题或者找到一些产品灵感,本文主要包括三个方面: 内购的基本概念; 代码层面如何开发,坑和对应的解决方案; 应用审核和后续运营的...

                                                                                  2019-04-21 23:04:31

                                                                                  阅读数 8420

                                                                                  评论数 5

                                                                                  深入浅出iOS编译

                                                                                  前言 两年前曾经写过一篇关于编译的文章《iOS编译过程的原理和应用》,这篇文章介绍了iOS编译相关基础知识和简单应用,但也很有多问题都没有解释清楚: Clang和LLVM究竟是什么 源文件到机器码的细节 Linker做了哪些工作 编译顺序如何确定 头文件是什么?XCode是如何找到头文件的? C...

                                                                                  2018-12-23 20:59:26

                                                                                  阅读数 12215

                                                                                  评论数 7

                                                                                  iOS 性能优化 - TimeProfiler分析代码耗时

                                                                                  Time Profiler Time Profiler用来分析代码的执行时间,主要用来分析CPU使用情况。 注意:要在release模式(或者自定义的其他的打包模式)下分析,原因在release模式下: 会开启编译器优化,提高代码运行效率 生成调试的符号表,这样才能够在profile的时候看到代...

                                                                                  2018-11-20 23:37:02

                                                                                  阅读数 1274

                                                                                  评论数 0

                                                                                  iOS 性能优化 - Allocations分析内存分配

                                                                                  Allocations Allocations用来分析静态内存分配。 Demo项目 Demo App Demo是一个简单的图片应用:首页只有一个简单的入口;次级页面会读取本地页面,加滤镜,然后按照瀑布流的方式显示出来;第三个页面提供大图显示; 运行代码:点击Photos -&am...

                                                                                  2018-10-21 14:45:24

                                                                                  阅读数 1861

                                                                                  评论数 0

                                                                                  XCode 10打包上传后在iOS 9上Crash(2018)

                                                                                  问题描述: XCode 10打包的App在iOS 9上Crash。 原因: App Store的Bug,上传后的代码经过App Store处理后,加载assets中的图在iOS 9上会Crash。 解决方案: 切回到XCode 9.4打包,前提是你没有用到一些iOS 12的新特性。 弃用Asse...

                                                                                  2018-09-28 23:12:27

                                                                                  阅读数 4057

                                                                                  评论数 4

                                                                                  聊聊AppDelegate解耦

                                                                                  AppDelegate 在iOS开发中,AppDelegate指的是UIApplicationDelegate,用来处理App层面的事件,包括生命周期变化,OpenURL,处理HandOff和Intent等。 每个iOS都有一个入口函数main,其中的一个参数就是AppDelegate: i...

                                                                                  2018-08-12 18:52:46

                                                                                  阅读数 24542

                                                                                  评论数 1

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

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

                                                                                  2018-07-12 22:33:40

                                                                                  阅读数 3467

                                                                                  评论数 5

                                                                                  深入理解iOS Crash Log

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

                                                                                  2018-07-06 21:11:36

                                                                                  阅读数 4502

                                                                                  评论数 3

                                                                                  XCode启动参数和环境变量

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

                                                                                  2018-06-30 12:54:57

                                                                                  阅读数 1934

                                                                                  评论数 1

                                                                                  Safari/Chrome调试WebView

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

                                                                                  2018-06-17 21:51:07

                                                                                  阅读数 4594

                                                                                  评论数 0

                                                                                  深入理解Toll-Free Bridging

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

                                                                                  2018-04-26 15:28:28

                                                                                  阅读数 1133

                                                                                  评论数 3

                                                                                  iOS汇编精讲(上篇)

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

                                                                                  2018-04-21 12:11:32

                                                                                  阅读数 2169

                                                                                  评论数 5

                                                                                  Sqlite的事务,锁和WAL模式

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

                                                                                  2018-03-21 22:49:14

                                                                                  阅读数 1499

                                                                                  评论数 0

                                                                                  Objective C范型

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

                                                                                  2018-01-07 14:51:16

                                                                                  阅读数 1285

                                                                                  评论数 0

                                                                                  新年快乐

                                                                                  新年快乐

                                                                                  2017-12-31 21:33:10

                                                                                  阅读数 620

                                                                                  评论数 3

                                                                                  Fishhook替换C函数的原理

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

                                                                                  2017-11-04 16:17:48

                                                                                  阅读数 3644

                                                                                  评论数 0

                                                                                  深入理解iOS App的启动过程

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

                                                                                  2017-10-23 13:28:28

                                                                                  阅读数 12454

                                                                                  评论数 20

                                                                                  聊聊SQLite - 基础篇

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

                                                                                  2017-09-24 15:38:39

                                                                                  阅读数 1028

                                                                                  评论数 0

                                                                                  Moya的设计之道

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

                                                                                  2017-08-11 13:44:52

                                                                                  阅读数 5764

                                                                                  评论数 21

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

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

                                                                                  2017-07-28 14:38:34

                                                                                  阅读数 3821

                                                                                  评论数 3

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