摘要:
问题背景 在Flex布局方式下, 父容器约定是换行的方式, 不足以容纳一行子元素的时候, 会单独进行折行, 那么折行的行间距如何处理呢? 解决办法 通过在子Item上面设置margin-top可以模拟出折行之后, 下面一行距离上面一行的间距; 但是这样操作之后, 会导致第一行和父容器的间距增大, 通 阅读全文
摘要:
一、Crash详情 Crash类型 exception EXC_BREAKPOINT (SIGTRAP) reason EXC_BREAKPOINT EXC_ARM_BREAKPOINT fault_address:0x0000000185ba6824 Crash堆栈 0 libswiftCore. 阅读全文
摘要:
一、代码示例 // // ViewController.swift // LazyTest // // Created by lilun.ios on 2021/7/30. // import UIKit class ViewController: UIViewController { lazy v 阅读全文
摘要:
一、示例代码 import UIKit let obj = TestObj() class TestObj { init() { print("\(type(of: self)) init") } } class ViewController: UIViewController { func tes 阅读全文
摘要:
一、背景 Swift具备完善的Error handle机制,对于纯Swift下面的Error,在编码的时候能够正确处理。 在使用try? 处理抛出Error的方法的时候,会忽略Error,直接返回nil 二、Swift 与 Objc下面的Exception 下面的代码是经常遇到的一种场景,Swift 阅读全文
摘要:
(lldb) expr -l Swift -- import UIKit (lldb) expr -l Swift -- let $pin = unsafeBitCast(0x7f81c8d459f0, to: UILabel.self) (lldb) expr -l Swift -- print( 阅读全文
摘要:
示范代码 ` func testScenarioA2() throws { var store: Int = 100 DispatchQueue.concurrentPerform(iterations: 1_000_000) { _ in store.negate() _ = store } } 阅读全文
摘要:
结构体并不代表线程安全,swift在此上未做保证 func testScenarioA() throws { var store: Int = 0 DispatchQueue.concurrentPerform(iterations: 1_000_000) { i in store = i _ = 阅读全文
摘要:
与上一篇逻辑类似,这里采用同样的生产者消费者模式 创建线程使用了BlockOperation封装操作,使用OperationQueue作为并发队列 代码如下: import Foundation var run: Bool = true /// 将字符转成UInt8 func charToInt(c 阅读全文
摘要:
看到一个题目,多个线程交替输出 AB0CD1EF2GH3... 这个可以使用多种实现,主要考察线程之间的同步方式。 线程之间的同步方式有多种,这里采用第一种 import Foundation var run: Bool = true /// 将字符转成UInt8 func charToInt(ch 阅读全文