iOS开发
未读
聊聊iOS开发中堆与栈的区别
堆一般是存放对象的,栈一般是存放方法、变量的。 堆存储的是对象、实体,栈存储的方法参数和局部变量(存储的内容不同)栈是由编译器自动管理,无需手动控制;堆则由程序员控制,如内存区域的申请(new)和释放(release),容易内存泄漏(管理方式的不同)栈空间很小。栈是向低地址扩展的数据结构,是一块连续
iOS开发
未读
TCP 和 UDP的小总结
TCP 建立连接 形成传输数据的通道 在连接中进行大数据的传输(数据大小不受限制)通过三次捂手完成链接 是可靠的协议 安全的送达 特点: 必须建议链接 效率会稍低 场景: 数据文件的下载 udp 只管发送 不确认对方是否接收到 将数据及源目的封装成数据包中 不需要建立连接 每个数据的大小限制在64K
iOS开发
未读
内存管理之NSTimer定时器
CADisplayLink 它一个定时器 是用于同步屏幕刷新频率的计时器 CADisplayLink其实也是一个定时器,只不过这个定时器不用你来设置时间,它是要保证调用频率和屏幕的刷帧频率一致,通常来说大概是60FPS(一秒钟会调用60次),当然如果你主线程要是做了很多耗时操作的话也可能就不到60了
iOS开发
未读
多线程的安全隐患以及队列组和线程锁
多线程确实可以大大提高我们的app的运行效果和体验 但是有时候也容易引发一些问题 比如资源的抢占问题 多个线程同时访问同一个对象 同一个文件或者变量 先简单介绍一下自旋锁和互斥锁 自旋锁是高级锁 不会进入休眠 会一直在那里等待 处于忙等状态 互斥锁在等待的时候会进入休眠 然后等待唤醒 不过进入睡眠和
iOS开发
未读
Block的相关知识
什么是block? block是将函数及其执行上下文封装起来的对象 Block 截获变量 请看下面一段代码执行之后的打印结果是多少? 局部变量
int number = 6;
int(^Block)(int) = ^int(int num){
return num * number;