iOS
QIYUBLOG
一个iOS开发实习生!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于UITableView UI与数据源不同步造成的Crash
当tableView数据源发生变换需要更新视图时,最直接的方式是直接调用reloadData方法,然而如果我们的tableView数据源巨大时,会造成很多不必要的方法调用。例如有如下程序:每当点击update时,会向tableView的数据源数组中增加两条数据,更新UI,如果我们直接调用reloadData来更新UI,会是的前面没有任何改变的4行也被刷新一遍,造成性能损失。因此通常数据源中局部数据更新时我们会调用UITableView的以下几种方法:- (void)beginUpdates;-原创 2020-06-25 21:34:59 · 1418 阅读 · 0 评论 -
copy修饰NSArray strong修饰NSMutableArray
strong与copy修饰符strong修饰的属性,对该属性赋值时发生指针拷贝,即浅拷贝;copy修饰的属性,对该属性赋值时发生内容拷贝,即深拷贝。(存在特殊Case)通过重写对象的setter方法实现。当将不可变对象赋值给copy修饰的不可变对象时,也是发生浅拷贝。这算是一种优化,验证见下文。对数组而言,浅拷贝即拷贝了指向数组的指针;深拷贝即拷贝了数组中存储的内容,而这个深拷贝是通过调用copy方法实现。copy与mutableCopy方法以下代码发生崩溃,为什么?@prope转载 2020-06-25 17:34:36 · 791 阅读 · 0 评论 -
iOS APP间跳转
App间跳转常见场景如第三方登录,例如饿了么使用支付宝登录,我们需要从饿了么App跳转至支付宝App进行授权。常用的实现App间跳转方式有以下两种:URL SchemeUniversal Link原创 2020-06-20 16:04:03 · 1874 阅读 · 0 评论 -
iOS KVO实现
KVO全称Key-Value Observing,可用于监听某个对象属性值的变化。KVO底层实现原理参考自:https://juejin.im/post/5adab70cf265da0b736d37a8KVO底层怎么实现,当被观察对象的属性值发生变化时,由谁来调用我们实现的observeValueForKeyPath方法?在修改属性值时一定会去调用该属性对应的setter方法,通过实现子类重写对应的setter方法,在setter方法中处理对observeValueForKeyPath方法的调用。转载 2020-05-11 21:30:33 · 303 阅读 · 0 评论
分享