Companion 2019-06-26
一直觉得一个 view 就一个 layer,到今天才发现不是这样子的。
Xcode8的调试技能又增加了一个黑科技:Memory Graph。简单的说就是可以在运行时将内存中的对象生成一张图。在现场的开发者听到了这个消息时响起了雷鸣般的掌声!我们来看看前方记者发回的现场照片: 妈妈说再也不用担心引用循环啦!除非你是个瞎子。那么通过一个实际项目来练习一…
我们知道,开发者在使用 Xcode 开发调试 App 时,一旦遇到崩溃问题,开发者可以直接使用 Xcode 的调试器定位分析崩溃堆栈。但如果 App 发布上线,用户的手机发生了崩溃,我们就只能通过分析系统记录的崩溃日志来定位问题,在这份崩溃日志文件中,会指出 App 出错的函数内存地址,关键的问题,崩溃日志中只有地址,类似 0x2312e92f 这种,这看起来岂不是相当头疼,那怎么办呢?
幸好有 dSYM 文件的存在,它是帮助苦逼的码农有效定位 bug 问题的重要途径。崩溃堆栈里的函数地址可以借助 dSYM 文件来找到具体的文件名、函数名和行号信息的。这里就简单介绍下通过 dSYM 文件如何分析崩溃堆栈信息
前言 现在越来越多的app都使用了JSPatch实现app热修复,而JSPatch 能做到通过 JS 调用和改写 OC 方法最根本的原因是 Objective-C 是动态语言,OC 上所有方法的调用/类的生成都通过 Objective-C Runtime 在运行时进行,我们可以…
前言 在面向对象编程中,我们每天都在创建对象,用对象描述着整个世界,然而对象是如何从孕育到销毁的呢? 目录 1.孕育对象 2.对象的出生 3.对象的成长 4.对象的销毁 5.总结 一.孕育对象 每天开发我们都在alloc对象,而alloc方法做了些什么呢? + (id)allo…
(接上篇) 五. Aspects hook过程详解 先看看函数调用栈的情况 - aspect_prepareClassAndHookSelector(self, selector, error); ├── aspect_hookClass(self, error) │ ├──a…
相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结。iOS中的HotFix方案大致可以分为四种:
WaxPatch(Alibaba)
Dynamic Framework(Apple)
React Native(Facebook)
JSPatch(Tencent)
可能你在学习 RxSwift,或者是要去学习 RxSwift,亦或者是已经熟练到应用实际项目中。不管怎么样,我将在这里以我的学习方式来和大家一起学习 RxSwift。
12 月 3 日,由淘宝主办的 Node 地下铁沙龙在广州广电平云广场举办。此次邀请的嘉宾在 Node.js 方面有所实践探索,分别来自 UC、腾讯、淘宝公司。沙龙的演讲内容有:刘欣 ---Thrift 下的 Node.js 跨语言异构;九十 ---Node.js 服务前端数据接口的演进;卢涛南 --- TypeScript 在 Node.js 中的应用;姚穗斌 --- 边际开发成本最小化的直出框架。感兴趣的小伙伴快来报名参加吧!
最近在新项目中尝试使用 Moya+RxSwift+Argo 进行网络请求和解析,感觉还阔以,再来给大家安利一波。
前言 在“Runtime病院”住院的后两天,分析了一下AOP的实现原理。“出院”后,发现Aspect库还没有详细分析,于是就有了这篇文章,今天就来说说iOS 是如何实现Aspect Oriented Programming。 目录 1.Aspect Oriented Progr…
前言 Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这个新功能“Blocks”。从那开始,Block就出现在iOS和Mac系统各个API中,并被大家广泛使用。一句话来形容Blocks,带有自动变量(局部变量)的匿名函数…
这次实践的最终目的,是要实现 “自由设定微信定位” 的功能,这个功能的操作流程应该是:
打开 APP,输入一对经纬度数据
进入微信,APP 自动读取输入的经纬度数据,作为使用 “附近的人” 时的数据来源
前言 到了今天终于要 "出院" 了,要总结一下住院几天的收获,谈谈 Runtime 到底能为我们开发带来些什么好处。当然它也是把双刃剑,使用不当的话,也会成为开发路上的一个大坑。 目录 1.Runtime 的优点 (1) 实现多继承 Multiple Inheritance (2) Met…
前言 在上篇文章中,详细分析了RACSignal是创建和订阅的详细过程。看到底层源码实现后,就能发现,ReactiveCocoa这个FRP的库,实现响应式(RP)是用Block闭包来实现的,而并不是用KVC / KVO实现的。 在ReactiveCocoa整个库中,RACSig…
前言 我第一次开始重视Objective-C Runtime是从2014年11月1日,@唐巧老师在微博上发的一条微博开始。 这是sunnyxx在线下的一次分享会。会上还给了4道题目。 这4道题以我当时的知识,很多就不确定,拿不准。从这次入院考试开始,就成功入院了。后来这两年对R…
提到非越狱环境下 App Hook 大家早就已经耳熟能详,已经有很多大神研究过,这方面相关的资料和文章也能搜到很多。我最早是看到乌云知识库上蒸米的文章才对这方面有所了解,当时就想试试,整个过程看似简单(大神总是一笔带过),然而当自己真正开始动手时一路上遇到各种问题(一脸懵逼),在 iOSRE 论坛上也看到大家遇到的各种问题,其实阻扰大家的主要是一些环境的搭建以及相关配置没设置好,结果导致 dylib 编译过程各种错误,重签名不成功,各种闪退等。所以本文里的每一步操作都会很详细的交代,确保大家都能操作成功。
本文适合有一定RAC基础的童鞋做不时的查询,所以本文不做详细解释。 一、常见类 1、RACSiganl 信号类。 RACEmptySignal :空信号,用来实现 RACSignal 的 +empty 方法; RACReturnSignal :一元信号,用来实现 RACSign…
前言 在上篇中,仔细分析了一下Block的实现原理以及__block捕获外部变量的原理。然而实际使用Block过程中,还是会遇到一些问题,比如Retain Circle的问题。 目录 1.Retain Circle的由来 2.__weak、__strong的实现原理 3.wea…
前言 掘金3.5.2上线后发现了一个bug,我司iOS小哥上线前不小心改动了一部分代码,导致脏数据被缓存,取缓存的时候会导致项目崩溃...(苹果的审核越来越不认真了....好吧,我不推锅了,让我跪着写完这篇博客).. 回归正题: 在iOS中有很多种热修复方案,在这里我就不一一介…
前言 ReactiveCocoa是一个(第一个?)将函数响应式编程范例带入Objective-C的开源库。ReactiveCocoa是由Josh Abernathy和Justin Spahr-Summers 两位大神在对GitHub for Mac的开发过程中编写的。Justi…
iOS (OC) 开发之个人调试技巧分享
介绍 instruments
前言 紧接着上篇的源码实现分析,继续分析RACSignal的变换操作的底层实现。 目录 1.过滤操作 2.组合操作 一. 过滤操作 过滤操作也属于一种变换,根据过滤条件,过滤出符合条件的值。变换出来的新的信号是原信号的一个子集。 1. filter: (在父类RACStream…
前言 关于ReactiveCocoa v2.5中冷信号和热信号的文章中,最著名的就是美团的臧成威老师写的3篇冷热信号的文章: 细说ReactiveCocoa的冷信号与热信号(一)细说ReactiveCocoa的冷信号与热信号(二):为什么要区分冷热信号细说ReactiveCoc…