原创 iOS 藍牙進入後臺仍保活

相信大家在開發藍牙應用的過程中會遇到需要連接藍牙獲取實時數據,然而我們不可能讓應用一直保持在前臺運行,所以需要設置權限讓APP進入後臺還繼續運行藍牙模塊。 1、首先我們會想到xcode的設置,如下圖 2、然而這樣設置了,APP進入後臺後

原创 swift 對json數組根據時間排序

通過服務器獲取到一個json數組,有可能數組裏的數據時亂序的,當有需求要按照時間的順序顯示數組中的model,便可利用swift中的sorted函數來進行排序。 代碼如下: //按日期排序 self.da

原创 swift 計算兩個日期相差幾天

業務上需要計算兩個日期相差幾天,來顯示上一次操作時間過去多久。官方爲我們提供了NSCalendar類,來管理時間。 天的參數是:NSCalendar.Unit.day 如果計算相差的小時數,可改爲NSCalendar.Unit.hour;

原创 iOS 優化你是從哪幾方面着手

一、首頁啓動速度 1、啓動過程中做的事情越少越好(儘可能將多個接口合併) 2、不在UI線程上作耗時的操作(數據的處理在子線程進行,處理完通知主線程刷新節目) 3、在合適的時機開始後臺任務(例如在用戶指引節目就可以開始準備加載的數據) 二、

原创 KVO編碼(swift )

KVO,即:Key-Value Observing,它提供一種機制,當指定的對象的屬性被修改後,則對象就會接受收到通知。簡單的說就是每次指定的被觀察的對象的屬性被修改後,KVO就會自動通知相應的觀察者了。 對於誇界面修改實例屬性的,我們會

原创 iOS日誌打印存貯到txt文件及沙盒文件操作

在我們開發中過程中有時候會有這樣的場景,需要脫離連線調試代碼,但是又看不見控制檯的Log,所以將Log存到文本中,調試過程全部記錄下來,隨時可以看。 存貯: class func logWithTag(_ tag:String){

原创 Swift 閉包(block)詳解

1、閉包 Swift對閉包進行了簡化: 利用上下文推斷參數和返回值類型 隱式返回單表達式閉包,即單表達式閉包可以省略return關鍵字 參數名稱縮寫 尾隨(Trailing)閉包語法 先來看一個排序的例子,數組的降序排列 let use

原创 iOS 如何捕獲異常?

在AppDelegate.m 文件 app啓動時(didFinishLaunchingWithOptions),添加一個異常捕獲的監聽 - (BOOL)application:(UIApplication *)application d

原创 swift 音樂播放單例

遇到需要播放鬧鐘,警告鈴的需求時,需要封裝一個播放音樂的單例,以下是單例代碼: // // AlertSoundPlayer.swift // Sleep // // Created by haitao on 15/11/27.

原创 runtime 實現方法交換 viewwillappear方法

面試題:在程序中方法實現只執行一次,利用runtime方法交換重寫viewwillappear。 1、新建分類  #import "UIViewController+swizzling.h" #import <objc/runtime.

原创 cocoapod更新問題 國內支持庫爲https://gems.ruby-china.com/

一、首先查看一下自己的ruby,看是不是 https://gems.ruby-china.com/ gem sources -l 二、如果不是 https://gems.ruby-china.com/ 的源的話,就添加新源,卸載舊源; g

原创 Runtime在Swift中的用法

Runtime是什麼? 運行時(Runtime)是指將數據類型的確定由編譯時推遲到了運行時 Runtime是一套比較底層的純C語言API, 屬於1個C語言庫, 包含了很多底層的C語言API 平時編寫的OC代碼,在程序運行過程中,其實最終會