Flutter第一天笔记📒官方参考资料Dart 语言 官方说明书
Dart代码格式
Dart编辑器 练习语法
Dart 指导中文版
Flutter中文官方
Flutter中国开源项目
Flutter Widget介绍
Flutter官方网站:https://flutter.dev/
Flutter官方文档:https://flutter.dev/docs
Flutter中文网:https://flutter.cn/
Flutter示例应用:https://flutter.dev/showcase
Flutter开发者论坛:https://flutter.dev/community
构...
SwiftUI 健康圆环并控制进度显示123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081import SwiftUIstruct ReviewContentView: View { @State private var progressExternal = 0.3 @State private var progre...
github中添加SSH
swift 使用AutoLayout自动布局NSConstraint
12345678910111213141516171819202122232425262728293031323334353637private func setupUI() { layer.cornerRadius = 4 layer.masksToBounds = true backgroundColor = UIColor.red contentView.addSubview(spaceNameLabel) contentView.addSubview(da...
tableView 嵌套 collectionView
应用场景: 评论界面。
使用UICollectionView 布局一个可复选, 自适应宽度的标签选择控件。
步骤:
选用 UICollectionView AutoLayout布局。
外部主控制器传入数据, 刷新, 并加载初始化状态
主控制器刷新layout
UICollectionViewFlowLayout
布局方式, 根据系统返回的[UICollectionViewLayoutAttributes]去动态的计算排列方式 .
123456789101112131415161718192021222324252627282...
KVO
key value observing 键值监听。当指定对象的属性被修改后,允许对象接收到通知的机制。
又叫作观察者模式 KVO
先看下面 kvo 代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253//// ViewController.swift// testKVO//// Created by dayu on 2022/2/25.//import UIKit// Swift里KVO不需要像OC里那样手动释放,系统自动释...
信号量(Dispatch Semaphore)GCD中信号量,指的是 Dispatch Semaphore ,是持有计数的信号。
信号量提供了三个函数
应用
保持线程同步,将异步任务转换为同步执行任务
保证线程安全,为线程加锁
保持线程同步
异步任务转换为同步 执行任务
123456789101112131415161718192021222324252627282930dispatch_semaphore_create:创建一个 Semaphore 并初始化信号的总量。dispatch_semaphore_signal:发送一个信号,让信号总量 +1。dispatch_sem...
线程组dispatch_group_async
使用场景:
在n个耗时并发任务都完成后,再去执行接下来的任务(通过notify)。 比如: 在n个网络请求完成后去刷新UI页面。
12345678910111213141516171819202122232425- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // 并发队列 dispatch_queue_t concur...
多线程-栅栏函数dispatch_barrier_async
使用实例
使用GCD实现多读单写?
多个读者同时读取数据, 而在读的时候不能写入数据。并且,在写的过程中,不能有其他写者去写。即读者之间是并发的,写着与读者或其他写者是互斥的。
这里的写处理,就是通过栅栏的形式去写。 可以用dispatch_barrier_sync(栅栏函数)实现。
12345678910111213141516171819202122232425262728293031- (void)viewDidLoad { [super viewDidLoad]; // ...
多线程——死锁
死锁,就是队列引起的循环等待。
比较常见的例子: 主队列同步
任务添加到主队列(队列: 执行任务的等待的队列), 同步执行,即需要立即执行,(同步: 会造成线程堵塞) , 添加到主队列也就意味着当前任务执行完成才能执行下一个任务(添加到主队列的这个任务);
就会导致当前任务等待刚才添加到主队列的任务执行完才会执行, 而主队列下当前执行的任务又是遵循FIFO先进先出原则,添加到主队列的任务又需要等待当前任务执行完才会继续执行, 就造成了互相等待, 死锁.
看下面代码:
viewDidLoad当前任务被 NSLog(@"deal lock");这个...