iOS

UITableView相关

重用机制 当Cell除了界面的时候,Cell会放入重用池,然后新出现的Cell就会使用重用池中的Cell。 新闻、资讯类App中数据同源问题 在下拉刷新的时候,用户去删除一条数据 主线程记录删除操作,子线程获取数据后根据删除操作过滤对应的数据 设计成必须得等请求完才能进行删除操作 这种是删除操作不需要进行数据请求的业务逻辑,如果需要进行数据请求 删除操作的时候,cancel掉前面下拉数据请求,然后删除操作完成后,重新请求获取数据 如何在tableview解决多线程情况下,数据的处理 并发访问,数据拷贝(线程安全) 串行访问 基本是一个二选一,保证调用的数据都是最新的数据,别发生线程不安全的问题

  • Jin Black
    Jin Black
1 min read
iOS

iOS内存分布

代码段:编译之后的代码 数据段: 字符串常量:比如NSString *str = @"123" 已初始化的数据:已初始化的全局变量、静态变量等 未初始化的数据:未初始化的全局变量、静态变量等 栈(stack)区:局部变量,函数参数。分配的内存空间越来越小。超出作用域后自动释放 堆(heap)区存放alloc、malloc、calloc等关键字生成的的对象。分配的内存空间越来越大。常说的内存管理也是管理堆区的内存

  • Jin Black
    Jin Black
1 min read
iOS

GCD小结之控制最大并发数

原文地址iOS实录16:GCD小结之控制最大并发数,本文旨在做点笔记,加强记忆。 CGD并发的困扰 iOS中要使用并发队列合理利用多核CPU资源 多线程并发依靠时间片轮转方法实现,线程创建、销毁、上下文切换等会消耗CPU资源 iPone中不能无节制地提高并发,会抢占CPU资源,甚至会挤占掉主线程CPU资源(极端情况) 部分任务内部会有全局的锁,导致休眠、阻塞(如CoreText绘制时CGFont内部锁),会导致线程数大量增加 优雅的NSOperationQueue NSOperation是iOS提供的工作队列,开发者只需将任务封装在NSOperation的子类(NSBlockOperation、NSInvocationOperation或自定义NSOperation子类)中,然后添加进NSOperationQueue队列,队列就回按照优先顺序及工作的从属依赖关系(如果有的话)组织进行。 NSOperationQueue依靠maxConcurrentOperationCount控制并发数,默认-1,0不执行任何任务,1表示串行队列,

  • Jin Black
    Jin Black
1 min read
iOS

iOS 保持界面流畅的技巧

原文地址:https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/ 此处为了抄写和学习,可能记一些小笔记。 电子枪横向换行扫描为水平同步信号,画完一帧画面,回到原位,准备画下一帧之前为垂直同步信号。显示器通常以固定频率进行刷新,这个刷新频率就是垂直同步信号。 水平同步信号(horizonal synchronization) 垂直同步信号(vertical synchronization) 垂直同步(V-Sync)用于解决屏幕内容显示一半时,GPU就将新的一帧内容提交到缓冲区交换造成的画面撕裂问题。 卡顿差生原因:CPU和GPU不论哪个阻碍了显示流程,

  • Jin Black
    Jin Black
9 min read
iOS

iOS中@synthesize和@dynamic分别有什么用

@synthesize表示如果属性没有手动实现setter和getter方法,编译器会自动加上这两个方法。 @dynamic告诉编译器:属性的setter和getter方法由用户自己实现,不自动生成。假如一个属性被声明为@dynamic var,而且你没有提供@setter方法和@getter方法,编译的时候没有问题,但是当程序运行到调用setter或者getter方法时因为找不到自定义的对的方法,程序就会崩溃。编译时没有问题,运行时才执行相应的方法,这就是所谓的动态绑定。

  • Jin Black
    Jin Black
1 min read
iOS

iOS中@property属性关键字详解

@property的常用属性关键字有: strong:赋值时,调用对象的retain方法,使其引用计数加1,可以指向其他引用类型,强指针; weak:不增加对象的引用计数,也不持有对象,对象释放时,自动设置为nil; copy:创建一个引用计数为1的对象,基本数据类型浅拷贝,可变类型深拷贝,想要数据在拷贝后不发生改变则使用copy; assign:修饰基本数据类型(int,float,double),枚举,结构体等非OC对象类型; atomic:原子操作,提供线程安全,默认属性,会耗费系统资源; nonatomic:非原子操作,不提供线程安全,效率更高

  • Jin Black
    Jin Black
1 min read

Subscribe to All 4 Tomorrow - JinBlack's Sharing