- 博客(6)
- 收藏
- 关注
原创 JXCategoryView使用
1、首先父类VC使用JXCategoryView代理<JXCategoryViewDelegate, JXCategoryListContainerViewDelegate>2、定义三个属性@property (nonatomic, strong) NSArray *titleArr;// 标题数据@property (nonatomic, strong) JXCategoryTitleView *categoryView;// 标题view@property (nonatomic, s
2020-09-21 11:33:55
10460
1
原创 block原理学习(4.对象类型的auto变量)
1、定义一个简单的block: MJBlock block; { MJPerson *person = [[MJPerson alloc] init]; person.age = 10; block = ^{ NSLog(@"---------%d", person.age)...
2020-03-25 23:29:20
385
原创 block原理学习(3.block的分类)
block是一个对象,调用block的父类最终都继承自NSObject.// __NSGlobalBlock__ : __NSGlobalBlock : NSBlock : NSObject void (^block)(void) = ^{ NSLog(@"Hello"); }; NSLog(@"%@", [block class]); ...
2020-03-25 00:26:11
400
原创 block原理学习(2.block的截获变量(基本数据类型)底层原理)
block引用局部变量的情况局部变量一般有两种情况,一种是自动变量,一般情况定义的变量如int a = 0之类的系统默认的都会在之前添加auto关键字,这种局部变量会随着作用域的消失而自动销毁。另外一种是static修饰的局部变量,这种变量一直储存在内存中,在堆之上的代码区,不会随着作用域的销毁而销毁。定义一个简单的block:void (^block)(void)void test()...
2020-03-24 11:34:18
165
原创 block原理学习(1.block的底层数据结构)
blcok可以理解为一个代码块,但实质上是一个对象,封装了函数调用以及函数调用环境的oc对象定义一个简单的block:void (^block)(void) = ^(void){ NSLog(@"this is a block");};block();用clang把oc语言转换成c++底层代码并把强制转换如下:void (*block)(void) = &__main_...
2020-03-24 09:39:54
285
原创 Ios分类、扩展区别及底层实现
要想知道区别,首先要知道用途及特点一、分类1、分类常怎么用?a.把内容臃肿的类文件用分类的方法分解成一个或者几个类。b.framework私有方法公开化(重写私有方法)c.声明私有方法2、分类的特点(跟扩展的区别)a.运行时决议b.可以为系统类添加分类3、分类可以添加什么a.实例方法b.类方法c.协议d.属性,但不能添加实例变量,需要用到runtime关联对象的方法。如...
2020-03-04 19:40:38
259
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人