原创 Swift-函數式編程

函數式編程是一種編程範式,一個方法論。 其主要思想: 把計算過程儘量分解成一系列可複用函數的調用。 主要特徵: 函數是“第一等公民”,也就是函數與其他數據類型一樣,可以賦值給其他變量,作爲函數參數或者返回值。 1. 柯里化(currying

原创 iOS 各個系統版本的定位權限設置

系統對定位權限的設置會隨着時間發生變化,而我們只能擁抱變化!本文是對定位權限設置做個記錄,方便以後做系統適配。本篇也會持續更新~。 在iOS 7及以前: 系統設置裏面有永不、始終選項。 iOS8-10:永不、始終選項,如果配置NSLoca

原创 Swift-GCD使用

1. DispatchTime和DispatchWallTime的區別? 例如: 從現在開始,1小時之後是觸發某個事件 DispatchTime函數創建的是一個相對的時間, 參考的是當前系統的時鐘。當 device 進入休眠之後,系統的時鐘

原创 Swift中閉包作爲Blcok或C函數指針參數

最近在用Swift來播放系統震動音和使用Aspects來hook方法時遇到了點問題,所以學習並記錄下。 一、Swift閉包作爲block或者c函數指針參數時需使用@convention @convention(swift) : 表明這個是

原创 iOS開發解決定位權限卡頓

一、簡介 在iOS系統中,定位權限獲取是一個涉及進程間同步通信的方法,如果頻繁訪問可能會導致卡頓或者卡死。在一些打車或者地圖類的APP中,定位權限的卡頓報錯可能是大頭,亟需解決! 下面是系統類提供的訪問定位權限的方法: // CLLocat

原创 Swift-沒有dispatch_once實現只調用一次

早在Swift 3的時候,dispatch_once就被蘋果廢棄了,並且推薦使用懶初始化全局變量方案代替。 官方推薦的解決辦法: The free function dispatch_once is no longer available

原创 Swift-String常用功能

一、String與OC字符串轉換 Swift中的String使用方法跟OC有很大的不同,先介紹一下String和OC字符串的轉換方式,有時爲了方便可以轉爲OC的字符串來使用。 func testStrTransform() { //

原创 Swift-你可能會遇到的與OC混編問題

本篇文章總結一下自己Swift項目中遇到與OC混編的問題及解決辦法,文章儘量全面實用。 一、Swift屬性關聯 Swift中屬性關聯的寫法跟OC是比較類似的,看一個例子你應該就能懂。有興趣深入瞭解iOS-底層原理 18:關聯對象底層原理探索

原创 Swift中where的使用場景

Swift中可以使用where對模式匹配增加進一步的匹配條件。常見的5種使用場景:swiftch語句、for循環語句、協議中關聯類型的約束、函數的適用條件、擴展中。 func testWhere() { // 1. var

原创 Swift-模式匹配

模式就是匹配的規則,下面介紹Swift中的模式。 1. 通配符模式 _匹配任何值,_?匹配非nil值。 // 通配符模式 enum Life { case human(name: String, age: Int?) cas

原创 Swift字面量(literal)

在Swift中,可以通過字面量來初始化實例,比如:var a = 1, 就是通過字面量1初始化一個Int實例。那麼爲什麼能通過字面量初始化實例呢?接下來我們學習下字面量的知識。 一、字面量初始化實例 下面列舉了通過字面量來初始化的類型,後面

原创 Swift中指針

Swift中有4個指針類型:UnsafePointer、UnsafeMutablePointer、UnsafeRawPointer、UnsafeMutableRawPointer,通過指針可以直接修改指向的內存數據,下面簡單介紹下它們的幾個

原创 iOS BitCode

做iOS開發很多年了,對BitCode這個詞很熟悉,但要我說卻說不明白這個具體是什麼,所以今天就藉着看到的兩篇介紹文章來做個簡單總結。 首先聲明,本文是大神文章的彙總,如果你只想對Bitcode有個大概瞭解,可以閱讀本文;如果想有個深入的瞭

原创 Xcode14 新建項目後pod install報錯

Xcode14 新建項目後執行pod init或者pod install會報錯 TestBundle-Swift % pod init /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/c

原创 Swift-常見關鍵字

一、#available和@available @available是編譯時期作用,#available是運行時起作用。 1. @available 在Swift中用於修飾一個類型、擴展、協議、方法、屬性,用來表達它的可用性,比如平臺、操作