原创 Swift全局變量的線程安全分析

一、示例代碼 import UIKit let obj = TestObj() class TestObj { init() { print("\(type(of: self)) init") } }

原创 Swift 與 Objc Exception

一、背景   Swift具備完善的Error handle機制,對於純Swift下面的Error,在編碼的時候能夠正確處理。   在使用try? 處理拋出Error的方法的時候,會忽略Error,直接返回nil   二、Swift 與 Ob

原创 Swift 模式下面LLDB 輸出對象

(lldb) expr -l Swift -- import UIKit (lldb) expr -l Swift -- let $pin = unsafeBitCast(0x7f81c8d459f0, to: UILabel.self)

原创 Understanding Swift’s value type thread safety - 代碼分析(二)

示範代碼 ` func testScenarioA2() throws { var store: Int = 100 DispatchQueue.concurrentPerform(iterations: 1_000_000

原创 Understanding Swift’s value type thread safety - 代碼分析(一)

結構體並不代表線程安全,swift在此上未做保證 func testScenarioA() throws { var store: Int = 0 DispatchQueue.concurren

原创 Swift Copy On Write 多線程下面的資源競爭

Swift中的String、Array、Dictionary等容器類型默認實現了寫時複製,這個操作在多線程下面可能會帶來錯誤 https://bugs.swift.org/browse/SR-6543

原创 關於DateFormater

一、關於時間的解析 let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ssZ" //dateFormatter.timeZon

原创 Swift 排查引用循環

------------恢復內容開始------------ 一、最近使用RxSwift在多次信號的嵌套中,發現一個對象始終始終無法釋放   開始想通過Memory Graph驗證是否沒有釋放,一直報錯,後來確認是Xcode的bug No

原创 AutoLayout與UIbutton

1、UIButton貼近右邊,高度固定,寬度跟隨標題變化 class TestButton: UIButton { } class ViewController: UIViewController { override

原创 UIScrollView 在Autolayout下使用的一些問題

一、UIScrollView 雙指放大手勢,雙擊放大實現   在設置UIScrollView的frame後、maxZoomScale 和 minZoomScale之後,UIScrollView會自然支持雙指捏合的手勢,自然支持放大縮小   

原创 sourceTree .gitignore文件處理

  最近犯了個低級錯誤,在sourceTree中通過右鍵,直接將 工程文件加入到 ignore列表中。提交之後,別人拉下來代碼一直顯示報錯        在意識到上面這個錯誤之後,一直想恢復卻恢復不了,嘗試從SorceTree 偏好設置中也

原创 Mp4V2與ffmpeg靜態庫符號衝突問題解決

一、爲什麼靜態符號會衝突   無論macho二進制類型,還是Windows上的PE格式,還是Linux上的ELF格式,裏面都是按照特定格式存放的一個程序的代碼和數據   比如Linux下的可執行文件格式,大致分爲下面這些段   參考:htt

原创 iOS 處理HLS視頻流

一、HLS介紹   HLS是蘋果主導的音視頻傳輸協議,其主要的格式是一個索引文件(M3U8)+ ts分片的視頻文件。   HLS的優勢是iOS系統天然支持,通過Http 80傳輸,規避了常規的防火牆問題。   視頻的分片方便服務器CDN對視

原创 UILabel的DrawDrect方法

一、問題   如果繼承UILabel實現自己的一個Label,並且在子類的DrawRect方法中留空,什麼都不寫,會發生什麼?   代碼如下:   VC @interface ViewController () @property

原创 對於UITableView和UIImageView的DrawRect重寫之後的影響

一、繼承 UITableView和UIImageView , 重寫 DrawRect 方法,然後裏面留空   ImageView @implementation DrawImageView - (void)drawRect:(CGR