深入研究Block捕获外部变量和__block实现原理 – 掘金
前言 Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这个新功能“Blocks”。从那开始,Block就出现在iOS和Mac系统各个API中,并被大家广泛使用。一句话来形容Blocks,带有自动变量(局…
神经病院Objective-C Runtime住院第二天—消息发送与转发 – 掘金
前言 现在越来越多的app都使用了JSPatch实现app热修复,而JSPatch 能做到通过 JS 调用和改写 OC 方法最根本的原因是 Objective-C 是动态语言,OC 上所有方法的调用/类的生成都通过 Objective-C Runtime 在运…
神经病院 Objective-C Runtime 出院第三天——如何正确使用 Runtime – 掘金
前言 到了今天终于要”出院”了,要总结一下住院几天的收获,谈谈Runtime到底能为我们开发带来些什么好处。当然它也是把双刃剑,使用不当的话,也会成为开发路上的一个大坑。 目录 1.Runtime的优点 (1) 实现多继承Multi…
iOS 如何实现Aspect Oriented Programming (下) – 掘金
(接上篇) 五. Aspects hook过程详解 先看看函数调用栈的情况 – aspect_prepareClassAndHookSelector(self, selector, error); ├── aspect_hookClass(self, e…
iOS 如何实现Aspect Oriented Programming (上) – 掘金
前言 在“Runtime病院”住院的后两天,分析了一下AOP的实现原理。“出院”后,发现Aspect库还没有详细分析,于是就有了这篇文章,今天就来说说iOS 是如何实现Aspect Oriented Programming。 目录 1.Aspect Orie…
Objc 对象的今生今世 – 掘金
前言 在面向对象编程中,我们每天都在创建对象,用对象描述着整个世界,然而对象是如何从孕育到销毁的呢? 目录 1.孕育对象 2.对象的出生 3.对象的成长 4.对象的销毁 5.总结 一.孕育对象 每天开发我们都在alloc对象,而alloc方法做了些什么呢…
ReactiveCocoa 中 RACSignal 是如何发送信号的 – 掘金
前言 ReactiveCocoa是一个(第一个?)将函数响应式编程范例带入Objective-C的开源库。ReactiveCocoa是由Josh Abernathy和Justin Spahr-Summers 两位大神在对GitHub for Mac的开发过程中…
ReactiveCocoa 中 RACSignal 所有变换操作底层实现分析(上) – 掘金
前言 在上篇文章中,详细分析了RACSignal是创建和订阅的详细过程。看到底层源码实现后,就能发现,ReactiveCocoa这个FRP的库,实现响应式(RP)是用Block闭包来实现的,而并不是用KVC / KVO实现的。 在ReactiveCocoa整个…
ReactiveCocoa 中 RACSignal 所有变换操作底层实现分析(中) – 掘金
前言 紧接着上篇的源码实现分析,继续分析RACSignal的变换操作的底层实现。 目录 1.过滤操作 2.组合操作 一. 过滤操作 过滤操作也属于一种变换,根据过滤条件,过滤出符合条件的值。变换出来的新的信号是原信号的一个子集。 1. filter: (…
ReactiveCocoa 中 RACSignal 冷信号和热信号底层实现分析 – 掘金
前言 关于ReactiveCocoa v2.5中冷信号和热信号的文章中,最著名的就是美团的臧成威老师写的3篇冷热信号的文章: 细说ReactiveCocoa的冷信号与热信号(一)细说ReactiveCocoa的冷信号与热信号(二):为什么要区分冷热信号细说Re…
iOSAppHook – 专注于非越狱环境下 iOS 应用逆向研究 – iOS – 掘金
iOSAppHook 专注于非越狱环境下iOS应用逆向研究,从dylib注入,应用重签名到App Hook。 注意!本文所有操作均在以下环境下成功进行,不同平台或环境可能存在某些问题,欢迎大家在issue中提出问题以及相互讨论。 Mac OS X 1…
iOS 逆向入门实践 — 逆向微信,伪装定位 (一) – iOS – 掘金
这次实践的最终目的,是要实现 “自由设定微信定位” 的功能,这个功能的操作流程应该是: 打开 APP,输入一对经纬度数据 进入微信,APP 自动读取输入的经纬度数据,作为使用 “附近的人” 时的数据来源…
初探 CALayer 属性 – iOS – 掘金
一直觉得一个view就一个layer 到今天才发现不是这样子的 其关系图如下 图片.png CALayer属性表如下 图片.png CALayer和UIView的区别 1.UIView是UIKit的(只能iOS使用),CALayer是QuartzCo…
(广州线下活动) 八面玲珑的 Node.js 淘宝 FED 出品 – 前端 – 掘金
12 月 3 日,由淘宝主办的 Node 地下铁沙龙在广州广电平云广场举办。此次邀请的嘉宾在 Node.js 方面有所实践探索,分别来自 UC、腾讯、淘宝公司。沙龙的演讲内容有:刘欣 —Thrift 下的 Node.js 跨语言异构;九十 —Node….
iOS (OC) 开发之个人调试技巧分享 – iOS – 掘金
iOS (OC) 开发之个人调试技巧分享…
通过 Moya+RxSwift+Argo 完成网络请求 – iOS – 掘金
最近在新项目中尝试使用 Moya+RxSwift+Argo 进行网络请求和解析,感觉还阔以,再来给大家安利一波。 MoyaMoya 是一个基于 Alamofire 的更高层网络请求封装,深入学习请参见官方文档:Moya/Docs。 使用 Moya 之后网络请求…
iOS ReactiveCocoa 最全常用API整理(可做为手册查询) – 掘金
本文适合有一定RAC基础的童鞋做不时的查询,所以本文不做详细解释。 一、常见类 1、RACSiganl 信号类。 RACEmptySignal :空信号,用来实现 RACSignal 的 +empty 方法; RACReturnSignal :一元信号,…
RxSwift 学习指导索引 – iOS – 掘金
前言 000 前言:一起来学习 RxSwift 000 阅读提示:读一下又不会怀孕 000 参考资源 初章 体验 Rx 001 初章 第一节:为什么要学习并使用 RxSwift 002 初章 第二节:创建一个 tableView 00…
iOS 中的 HotFix 方案总结详解 – iOS – 掘金
原创文章转载请注明出处,谢谢 相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结。iOS中的HotFix方案大致可以分为四种: WaxPatch(Alibaba) Dynamic Framework(Apple) React Na…
iOS 崩溃堆栈信息的符号化解析 – iOS – 掘金
最近一段时间,在iOS开发调试过程中以及上线之后,程序经常会出现崩溃的问题。简单的崩溃还好说,复杂的崩溃就需要我们通过解析Crash文件来分析了,解析Crash文件在iOS开发中是比较常见的。但在跟开发者沟通过程中,云捕小编发觉大家对iOS的应用符号表还不是很…
Xcode8调试黑科技:Memory Graph实战解决闭包引用循环问题 – 掘金
Xcode8的调试技能又增加了一个黑科技:Memory Graph。简单的说就是可以在运行时将内存中的对象生成一张图。在现场的开发者听到了这个消息时响起了雷鸣般的掌声!我们来看看前方记者发回的现场照片: 妈妈说再也不用担心引用循环啦!除非你是个瞎子。那么通过…
Xcode 8 Instruments 工具集的变化与趋势 – iOS – 掘金
最近项目比较赶,没看Xcode 8的发布说明,不过,在做性能优化时,发现Instruments工具集比Xcode 7少了几项,被精简的工具中有一项对我们项目影响较大,就是GPU Driver。 Xcode 8 Instruments保留了17个工具。 Xco…
神经病院Objective-C Runtime入院第一天—isa和Class – 掘金
前言 我第一次开始重视Objective-C Runtime是从2014年11月1日,@唐巧老师在微博上发的一条微博开始。 这是sunnyxx在线下的一次分享会。会上还给了4道题目。 这4道题以我当时的知识,很多就不确定,拿不准。从这次入院考试开始,就成功…
深入研究Block用weakSelf、strongSelf、@weakify、@strongify解决循环引用 – 掘金
前言 在上篇中,仔细分析了一下Block的实现原理以及__block捕获外部变量的原理。然而实际使用Block过程中,还是会遇到一些问题,比如Retain Circle的问题。 目录 1.Retain Circle的由来 2.__weak、__strong的…
iOS 5分钟集成热修复(JSPatch) – 掘金
前言 掘金3.5.2上线后发现了一个bug,我司iOS小哥上线前不小心改动了一部分代码,导致脏数据被缓存,取缓存的时候会导致项目崩溃…(苹果的审核越来越不认真了….好吧,我不推锅了,让我跪着写完这篇博客).. 回归正题: 在iOS中有很多种热修复方案…