美文网首页
iOS开发过程中一些细节记录

iOS开发过程中一些细节记录

作者: 黑糊糊的梦想家 | 来源:发表于2019-07-16 23:48 被阅读0次

    1.少用+load方法,尽量使用+initialize。+load是在main方法执行之前就会执行,+initialize是在类首次被使用的时候才会执行,即main方法执行之后;

    2.使用NSTimer时,需要注意内存泄漏问题,计时器会保留目标对象。使用中间者持有NSTimer,或者让NSTimer的addTarget对象为其他对象,可以参考 NSTimer+YYAdd ,这里是将定时器自身作为addTarget对象;

    3.delegate属性使用weak修饰符,而不要使用assign。避免循环引用,同时不会产生野指针;

    4.FMDatabaseQueue 是一个同步串行队列,操作数据库时,如果读取的数据量较大会阻塞主线程,可以考虑创建一个常驻线程来操作数据库

    5.加载图片时,尽量使用对应尺寸的图片来加载(或差不多大小的图片),对于网络图片,现在都有方法去获取对应尺寸大小的图片(各种云服务的对象存储都有提供);

    6.如果有圆角,尽量避免 layer.cornerRadius 和 layer.masksToBounds 同时使用,同时使用会造成离屏渲染,可以使用CAShapeLayer绘制圆角;

    7.如果对象中的block是一个强引用属性(copy属性),需要注意循环引用问题;

    8.解决block循环引用会用到 _ _weak typeof,在block代码块执行过程中,有时会考虑到弱引用对象提前释放问题,所以会使用 _ _strong typeof 来对弱引用对象进行内部强引用,这种内部强引用的方式不会引起循环引用问题。需要注意的是,在执行 _ _strong typeof 时,如果引用的对象本身就已经释放了,那么此时内部强引用的对象会是一个空对象,这种情况需要做判空处理。

    9.使用dispatch_sync 时,如果执行的队列是串行队列,需要注意死锁问题。

    10.使用 CoreFoundation 创建的对象需要自行处理释放问题

    相关文章

      网友评论

          本文标题:iOS开发过程中一些细节记录

          本文链接:https://www.haomeiwen.com/subject/jlxflctx.html