tableView 嵌套 collectionView
应用场景: 评论界面。
使用UICollectionView 布局一个可复选, 自适应宽度的标签选择控件。
步骤:
选用 UICollectionView AutoLayout布局。
外部主控制器传入数据, 刷新, 并加载初始化状态
主控制器刷新layout
UICollectionViewFlowLayout
布局方式, 根据系...
KVO
key value observing 键值监听。当指定对象的属性被修改后,允许对象接收到通知的机制。
又叫作观察者模式 KVO
先看下面 kvo 代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253//// ViewControl...
信号量(Dispatch Semaphore)GCD中信号量,指的是 Dispatch Semaphore ,是持有计数的信号。
信号量提供了三个函数
应用
保持线程同步,将异步任务转换为同步执行任务
保证线程安全,为线程加锁
保持线程同步
异步任务转换为同步 执行任务
123456789101112131415161718192021222324252627282930dispa...
线程组dispatch_group_async
使用场景:
在n个耗时并发任务都完成后,再去执行接下来的任务(通过notify)。 比如: 在n个网络请求完成后去刷新UI页面。
12345678910111213141516171819202122232425- (void)viewDidLoad { [super viewDidLoad]; //...
多线程-栅栏函数dispatch_barrier_async
使用实例
使用GCD实现多读单写?
多个读者同时读取数据, 而在读的时候不能写入数据。并且,在写的过程中,不能有其他写者去写。即读者之间是并发的,写着与读者或其他写者是互斥的。
这里的写处理,就是通过栅栏的形式去写。 可以用dispatch_barrier_sync(栅栏函数)实现。
12345678910111213141...
多线程——死锁
死锁,就是队列引起的循环等待。
比较常见的例子: 主队列同步
任务添加到主队列(队列: 执行任务的等待的队列), 同步执行,即需要立即执行,(同步: 会造成线程堵塞) , 添加到主队列也就意味着当前任务执行完成才能执行下一个任务(添加到主队列的这个任务);
就会导致当前任务等待刚才添加到主队列的任务执行完才会执行, 而主队列下当前执行的任务又是遵循FIFO先进先出原则,...
任务 队列一、任务就是执行的操作的意思,也就是在子线程中执行的那段代码(block块内容)。在GCD中是放在block中的。执行任务有两种方式: 同步执行(sync)和异步执行(async)
同步(Sync)同步添加任务到指定的队列中,在添加的任务执行结束前,会一直等待,直到队列里面的任务完成之后再继续执行,即会阻塞线程。只能在当前线程中执行任务(当前线程,不一定是主线程),不具备开启新线程...
多线程一、进程,线程一、进程
1.进程是一个具有一定独立功能的程序,关于某次数据集合的一次运行活动,它是操作系统分配资源的基本单元。
2.进程是指在系统中正在运行的应用程序,就是一段程序的执行过程,我们可以理解为手机上的一个app。
3.每个进程之间是独立的, 每个进程均运行在其专用且受保护的内存空间内,拥有独立运行所需的全部资源。
二、线程
1.程序执行流的最小单元, 线程是进程中的一个...
数据安全及加密一、简术 SSL 加密的过程用了哪些加密方法, 为何这么做?
S SL加密过程忽略.
SSL加密, 在过程中实际使用了==对称加密==和==非对称加密==的结合.
主要的考虑是==先使用非对称加密进行连接==,这样做是为了避免中间人攻击密钥被劫持,但是非对称加密的效率比较低。 所以一旦建立安全连接后,就可以使用轻量的对称加密。
二、RSA非对称加密算法对称加密【算法】在加密...
iOS15新增UIKit要点特性
UINavigationBar, UIToolBar, UITabBar 设置颜色, 需要使用UIBarAppearance API
scrollEdgeAppearance
standardAppearance
上面这两个要设置成一个appearance, 不然导航栏带滚动视图的时候,
可能会导致本来设置的颜色变成透明的.
12345678...