- 博客(4)
- 收藏
- 关注
原创 block
一、block的本质block本质上也是一个OC对象,它内部也有一个isa指针block内部代码会封装到_block_func_0函数中,函数地址保存在FuncPtr中执行block内部代码时是通过FuncPtr找到函数地址进行调用int age = 10;void (^block)(void) = ^ { NSLog(@"%d", age);};//block底层结构struct __block_impl { void *isa; int Flags;
2021-01-19 15:37:48 304 1
原创 KVO的本质
KVO俗称“键值监听”,可以用于监听某个对象属性值的改变利用runtimeAPI动态生成一个子类,并且让instance对象的isa指向这个全新的子类当修改instance对象的属性时,会调用Foundation的_NSSetXXXValueAndNotify函数_NSSetXXXValueAndNotify函数内部会调用1、willChangeValueForKey:2、父类原来的setter实现3、didChangeValueForKey:didChangeValueForKey
2021-01-18 17:54:04 86
原创 NSString为什么用copy修饰
@property (nonatomic, copy) NSString *name1;@property (nonatomic, strong) NSString *name2;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; //当为可变字符串的时候,
2018-01-08 10:48:28 192
原创 多线程之互斥锁
互斥锁小结互斥锁,就是使用了线程同步技术. 同步锁/互斥锁:可以保证被锁定的代码,同一时间,只能有一个线程可以操作. self :锁对象,任何继承自NSObject的对像都可以是锁对象,因为内部都有一把锁,而且默认是开着的. 锁对象 : 一定要是全局的锁对象,要保证所有的线程都能够访问,self是最方便使用的锁对象. 互斥锁锁定的范围应该尽量小,但是一定要锁住资源的读写部分. 加锁后程序执
2016-10-23 09:10:25 193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人