自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (5)
  • 收藏
  • 关注

转载 OC对象的一生

前言在面向对象编程中,我们每天都在创建对象,用对象描述着整个世界,然而对象是如何从孕育到销毁的呢?目录1.孕育对象 2.对象的出生 3.对象的成长 4.对象的销毁 5.总结一.孕育对象每天开发我们都在alloc对象,而alloc方法做了些什么呢?+ (id)alloc { return _objc_rootAlloc(self);}所有对象all...

2019-01-31 14:33:00 719

转载 alloc/init和new的区别(其实没区别)

 在开发中,创建一个对象我们有如下方式:NSObject *obj_1 = [[NSObject alloc]init];NSObject *obj_2 = [NSObject new];先看看new源码:+ (id)new{    id newObject = (*_alloc)((Class)self, 0);    Class metaClass = self->...

2019-01-31 13:56:06 1989

转载 NSObject对象占用多少内存

面试题:一个NSObject对象占用多少内存?探寻OC对象的本质,我们平时编写的Objective-C代码,底层实现其实都是C\C++代码。OC代码的转化过程OC的对象结构都是通过基础C\C++的结构体实现的。我们通过创建OC文件及对象,并将OC文件转化为C++文件来探寻OC对象的本质OC如下代码#import <Foundation/Foundation.h&g...

2019-01-31 12:07:18 890

转载 Runtime的API

更多底层知识学习 https://www.jianshu.com/notebooks/24110540 Runtime API  类相关API1. 动态创建一个类(参数:父类,类名,额外的内存空间)Class objc_allocateClassPair(Class superclass, const char *name, size_t extraBytes)2. 注册一个...

2019-01-31 10:22:51 205

转载 self和super的区别

super的本质super关键字在调用方法的时候底层调用流程是怎样的?我们通过一段代码来看一下super底层实现,Person类提供run方法,Student类继承自Person ,并重写run方法,方法内部调用[super run];,将Student.m转化为c++代码查看其底层实现。// Student.m- (void) run{ [super run]; ...

2019-01-30 19:07:40 540

转载 runtime消息处理原理 -- (三)

方法调用的本质本文我们探寻方法调用的本质,首先通过一段代码,将方法调用代码转为c++代码查看方法调用的本质是什么样的。xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m[person test];// --------- c++底层代码((void (*)(id, SEL))(void *)objc_msgSend)...

2019-01-30 17:47:07 232

转载 深入查看Class结构 -- 类的结构体-3

Class的结构通过上一章中对isa本质结构有了新的认识,今天来回顾Class的结构,重新认识Class内部结构。首先来看一下Class的内部结构代码,对探寻Class的本质做简单回顾。struct objc_class : objc_object { // Class ISA; Class superclass; cache_t cache; ...

2019-01-29 12:32:22 770

转载 苹果对isa的优化 -- 类的结构体-2

原文 :https://www.jianshu.com/p/d949b51d5de7isa的本质在学习Runtime之前首先需要对isa的本质有一定的了解,这样之后学习Runtime会更便于理解。回顾OC对象的本质,每个OC对象都含有一个isa指针,__arm64__之前,isa仅仅是一个指针,保存着对象或类对象内存地址,在__arm64__架构之后,apple对isa进行了优化,变...

2019-01-28 19:19:06 547

转载 iOS底层weak的实现原理

weak是弱引用,所引用对象的计数器不会加一,并在引用对象被释放的时候自动被设置为nil。那么weak的原理是什么呢?weak表其实是一个hash(哈希)表 (字典也是hash表),Key是所指对象的地址,Value是weak指针的地址数组。通常用于解决循环引用问题。下面就分析一下weak的工作原理。weak 实现原理的概括Runtime维护了一个weak表,用于存储指向某个对象的所有we...

2019-01-24 10:29:14 3707

原创 Block原理,为什么block能捕获变量 -- 实战篇

书接上文 : block的原理篇 :https://blog.csdn.net/u014600626/article/details/78697535__block实现原理我们继续研究一下__block实现原理。__block修饰非对象的变量先来看看普通变量的情况。#import <Foundation/Foundation.h>int main(int ...

2019-01-21 14:00:20 1167

原创 用反射机制做组件化路由

看了很多网上的组件化路由 , 不太理解为什么这么做 , 仿照他们的接口和调用 , 自己做了一个 , 先说下需要解决什么问题 .在一个比较复杂的类中 , 常常某个ViewController会引入大量的其他ViewController,例如:FirstViewController会引入SecondViewController、ThirdViewController ,FourViewContr...

2019-01-15 15:01:23 294

原创 KVO的原理

问题iOS用什么方式实现对一个对象的KVO?(KVO的本质是什么?) 如何手动触发KVO首先需要了解KVO基本使用,KVO的全称 Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变。- (void)viewDidLoad { [super viewDidLoad]; Person *p1 = [[Person alloc]...

2019-01-04 18:09:09 1038

ios swift 直播动画demo

swift的 , 会OC的看无压力 , 直播中送礼物的动画, 写了常见的4种 , 包括 同时收到多个礼物时 , 展示位不够 的处理 , 可以到cocoaChina上找,那里不要积分

2018-07-04

NSArray越界崩溃解决方法

比较完美的解决了数组越界的问题, 在debug模式下会崩溃 , 在release不会崩溃 , 开发过程中 , 方便调试 , 正式环境中 减少崩溃.

2018-05-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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