iOS 中常见的几种锁-代码示例 移动开发

iOS 中常见的几种锁-代码示例

常用的各类锁性能比较文中Demo 均实现在 XWInterviewDemos1. iOS中的互斥锁在编程中,引入对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问对象。1.1 @synchronized (self)- (void)lock1 {    ...
阅读全文
YYAsyncLayer 源码剖析:异步绘制 移动开发

YYAsyncLayer 源码剖析:异步绘制

引言性能优化一直是 iOS 开发中的一个重头戏,其中界面流畅度的优化是至关重要的,因为它直接关系到用户体验。从最熟悉和简单的 UIKit 框架到 CoreAnimation、CoreGraphics、CoreText 甚至是 OpenGL,优化似乎是无穷无尽,也非常考验开发者的水平。YYAsyncLayer 是 ibireme 写的一个异步绘制的轮子,虽然代码加起来才 300 行左右,但质量比较高...
阅读全文
iOS中的“锁事” 移动开发

iOS中的“锁事”

抛砖引玉说到锁不得不提线程安全,说到线程安全,作为iOS程序员又不得不提 nonatomic 与 atomicnonatomic 不会对生成的 getter、setter 方法加同步锁(非原子性)atomic 会对生成的 getter 、setter 加同步锁(原子性)setter / getter 被 atomic 修饰的属性时,该属性是读写安全的。然而读写安全并不代表线程安全。线程安全概念(t...
阅读全文
深入理解RunLoop 移动开发

深入理解RunLoop

最近看了很多RunLoop的文章,看完很懵逼,决心整理一下,文章中大部分内容都是引用大神们的,但好歹对自己有个交代了,花了一个周天加几个晚上熬夜完成的,有个产出还是很爽的,不多比比了,下面开始吧。什么是RunLoop?RunLoop是一个接收处理异步消息事件的循环,一个循环中:等待事件发生,然后将这个事件送到能处理它的地方。RunLoop实际上是一个对象,这个对象在循环中用来处理程序运行过程中出现...
阅读全文
YYModel 源码剖析:关注性能 移动开发

YYModel 源码剖析:关注性能

前言json与模型的转换框架很多,YYModel 一出,性能吊打同类组件,终于找了些时间观摩了一番,确实收益颇多,写下此文作为分享。由于该框架代码比较多,考虑到突出重点,压缩篇幅,不会有太多笔墨在基础知识上,很多展示源码部分会做删减,重点是在理解作者思维。读者需要具备一定的 runtime 知识,若想阅读起来轻松一些,最好自己打开源码做参照。一、框架的核心思路使用过框架的朋友应该很熟悉如下的这些方...
阅读全文
YYCache 源码剖析:一览亮点 移动开发

YYCache 源码剖析:一览亮点

写在前面YYCache 作为当下 iOS 圈最流行的缓存框架,有着优越的性能和绝佳的设计。笔者花了些时间对其“解剖”了一番,发现了很多有意思的东西,所以写下本文分享一下。考虑到篇幅,笔者对于源码的解析不会过多的涉及 API 使用和一些基础知识,更多的是剖析作者 ibireme 的设计思维和重要技术实现细节。YYCache 主要分为两部分:内存缓存和磁盘缓存(对应 YYMemoryCache 和 Y...
阅读全文
iOS面试题,面试答这么多就可以了 移动开发

iOS面试题,面试答这么多就可以了

内容绝大部分摘抄网上,如有侵权请联系我删除,谢谢!下面的问题有的没有做解答,后面会慢慢补上!前言关于"面试官问这么基础的问题有必要吗"这个话题一直以来争论不休;其实我们可以这样理性的分析问题。面试官问的这些基础问题更多的是一些知识的深入, 这些知识大多是我们开发中不怎么想深入或者觉得不需要深入了解的; 比如NSString属性用strong关键字有啥利弊等。对于开发者我目前在小公司待着,对于网上的...
阅读全文
Runtime的应用 移动开发

Runtime的应用

attribute__attribute__是一套编译器指令,被GNU和LLVM编译器所支持,允许对于__attribute__增加一些参数,做一些高级检查和优化。__attribute__的语法是,在后面加两个括号,然后写属性列表,属性列表以逗号分隔。在iOS中,很多例如NS_CLASS_AVAILABLE_IOS的宏定义,内部也是通过__attribute__实现的。__attribute__...
阅读全文
iOS RunLoop入门小结 移动开发

iOS RunLoop入门小结

说明iOS中的RunLoop使用场景1.保持线程的存活,而不是线性的执行完任务就退出了不开启RunLoop的线程开启RunLoop的线程(1)实验用self来持有子线程(2)实验让线程不结束任务导致进入死亡状态](3)Event Loop模式(4)初步尝试使用RunLoop(5)初体验产生的疑问①为什么总是要把RunLoop和线程放在一起来讲?②如何创建RunLoop?③线程默认不开启RunLoo...
阅读全文
iOS性能调优之--tableView优化 移动开发

iOS性能调优之--tableView优化

背景作者基于之前自己所写的Swift项目--仿照推特客户端用纯Swift写的一个项目,目前已经公开放在GitHub上(https://github.com/waitwalker/MyTwitter); 接口用Python写的几个(https://github.com/waitwalker/MyTwitterAPI)目前所实现的功能是登录,注册,发推,首页列表等功能,其他页面都是一些假数据...
阅读全文
Loading...