- 博客(6)
- 收藏
- 关注
原创 Swift中的类与结构体
结构体除了属性的存储更安全、效率更高之外,其函数的派发也更高效。由于结构体不能被继承,内部函数属于静态派发,在编译期就确定了函数的执行地址,减少了函数的寻址过程以及内存地址的偏移计算,更加高效。
2022-02-07 16:26:27
1847
原创 RunLoop卡顿监控
卡顿主要表现为主线程卡死,不响应用户动作或者响应很慢,这种体验很差,会让用户对产品的认可度急速下滑,如果不及时优化,最终会导致用户流失。那么,哪些情况会导致主线程卡顿呢?大体有如下几个方面:很复杂的 UI 、图文混排的绘制量很大;主线程进行网络同步请求;主线程上做大量的 IO 操作;运算量过大,CPU 持续高占用;死锁和主子线程抢锁。检测方案为了优化卡顿,我们需要准确的知道哪里发生了卡顿,然后才能有针对性的进行优化,所以在开始优化之前我们需要去监控卡顿发生的地方。那么问题来了,怎么监控卡
2021-07-28 10:54:34
274
原创 自定义KVO,自动释放,监听多个属性
自定义的 KVO,支持多属性监听,支持自动释放。使用系统 KVO 监听属性先来回顾下系统 KVO 是如何使用的:@property (nonatomic, copy) NSString *msg;@property (nonatomic, strong) Person *person;1、添加观察者[self addObserver:self forKeyPath:@"msg" options:NSKeyValueObservingOptionNew context:nil];[self a
2021-03-28 11:58:27
373
1
原创 iOS 深拷贝自定对象
方案1: 直接实现 <NSMutableCopying>协议在自定义类中遵守NSMutableCopying协议,实现如下代码:#import <objc/runtime.h>- (id)mutableCopyWithZone:(NSZone *)zone{ CustomObject * NEW_MODEL = [[CustomObject alloc] init]; unsigned int count = 0; Ivar * ivarL
2021-03-28 11:49:46
338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人