反编译分析并模拟实现methodSignatureForSelector方法

前言 最近跟同事讨论了有关methodSignatureForSelector:的问题,大概如下: 一个ProtocolA声明了一个实例方法funcA,然后一个类ClassA声明实现这个ProtocolA,但是并没有实现方法funcA,对ClassA的实例调用methodSignatureForSelector:@selector(funcA)能否返回正确的signature? 一个类ClassB,在@interface声明了实例方法funcB,但是没有实现funcB,对ClassB的实例调用methodSignatureForSelector:@selector(funcB),能否返回正确的signature? 写个Demo验证了下,结果非常有意思,不由得好奇起来,所以深入研究了下methodSignatureForSelector:的实现,然后自己模拟实现出来。 Github地址: »

用QuartzCode快速实现一个收藏动画

前言 “工欲善其事,必先利其器”,iOS的Core Animation非常强大,可以做出非常炫酷的动画,但是实际写起来还是比较麻烦,代码不直观,需要反复的改参数、Build、运行,所以诞生了各种动画制作工具,本文就以其中比较有名的QuartzCode为例,快速实现一个收藏功能的星星动画,最终的效果如下: GitHub地址:https://github.com/zekunyan/QuartzCodeExample-StarAimation QuartzCode简介 QuartzCode是一款专门用来创作iOS/macOS动画的软件,基本上把整个Core Animation框架的内容都搬到了软件里面, »

反编译分析Xcode8 Release环境下的一个二级指针的EXC_BAD_ACCESS问题

二级指针 二级指针,也叫指针的指针,或者Out Parameters,可以用来改变一个指针的地址值,由于在Objective-C里面方法、函数不支持返回多个值,所以经常用二级指针实现这个功能,比如NSFileManager的- (BOOL)removeItemAtURL:(NSURL *)URL error:(NSError **)error方法,就可以让方法在内部创建error后传出。 问题 最近在Debug代码的时候,注释掉了一个带有二级指针参数的方法内部所有代码,然后在Release环境下安装运行,结果居然Crash了,猛然想起好像以前同事也遇到过,仔细检查了下,感觉代码是没有问题的, »

从零开始写下拉上拉刷新控件-思考、设计、实现

前言 一直以来,由于业务的高速发展,Alibaba.com网站的买家、卖家和友办三个App iOS端的下拉上拉等UI控件并没有完全统一,本着打造精品化App的理念,最近刚开发完成了统一的、可以适配三个App端的下拉上拉刷新控件ASCPullToRefresh,效果Demo如下: 下拉刷新 上拉加载 接下来,从思考、设计、实现三个阶段,回顾一下整个开发过程~ 思考 为什么造轮子 首先是为什么,为什么要从零开始全新写一个下拉上拉的控件? 确实,目前GitHub上开源的下拉上拉刷新控件非常多,Star数量多的、常用的如: »