- 博客(6)
- 收藏
- 关注
原创 iOS关联对象源码解析
前言关联对象(AssociatedObject)是一种运用runtime在分类中添加"属性"的方法。那么关联是怎样实现添加"属性"的呢?关联对象的实现步骤关联对象的实现步骤如下:在分类中.h中声明一个属性 在.m中声明该属性为动态加载 @dynamic 实现setter和getter方法1.@interface UIViewController (Test)@pro...
2019-05-29 17:53:43 306
原创 iOS category 源码解析
前言:iOS的分类(Category)是做iOS开发常用的一种模式,它可以让我们在不知道原有类内部结构的情况下添加属性,方法。合理的运用分类可以将代码很好的进行解耦,让代码更加清晰明了。那么分类是如何做到的动态添加属性和方法的呢?要是在分类里面添加了和原类同名方法会发生什么呢?1.Category简介category是Object-C 2.0之后添加的语言特性,category的主...
2019-05-29 17:53:02 293
原创 iOS block源码解析
什么是blockblock是什么?虽然所有的iOS开发都会使用到这个对象,但实际上要完全搞清楚block也是不容易的。首先下个定义,实际上block是包含函数指针及上下文调用的对象。后面,我们再慢慢看下block内部究竟是怎样进行函数调用和上下文的处理。block实质举个
2019-05-29 17:52:20 152
原创 iOS 消息转发
前言OC是个运行时语言,它的运行时主要靠runtime库。而一个对象调用一个方法的时候,实际上是向对象发送一个消息。那么,若是找不到对应的方法的话,会发生什么现象呢?方法查询从上一篇我们可以看到方法的查询是沿着supclass向源头查找的,而最后找不到的话才会进入消息转发流程。那么方法的查询是哪个函数呢?IMP lookUpImpOrForward(Class cls, SEL...
2019-05-29 17:51:22 154
原创 简单说明iOS事件传递和响应
前言:我们点击屏幕的时候发生了什么?系统又是怎么找到对应的响应对象来响应的?1.事件当我们点击屏幕的时候,会产生一个事件。其实就是UIEvent对象。@property(nonatomic,readonly) UIEventType type;//类型@property(nonatomic,readonly) UIEventSubtype subtype;@prop...
2019-05-29 17:50:40 190
原创 [self class]和[super class]带来的思考
前言class是很多人经常使用的方法,而【self class】和【super class】的区别也在面试中经常使用到。如下所述:#import "Person.h"@interface Man : Person@end#import "Man.h"@implementation Man- (instancetype)init { self = [super...
2019-05-29 17:50:01 2047
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人