摘要:
模型->jsonString 方式1. NSDictionary *paramDict = getTakeupInfo.yy_modelToJSONObject; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:paramDict
閱讀全文
posted @ 2022-05-12 17:58
HJiang
閱讀(779)
推薦(0)
摘要:
#import <Foundation/Foundation.h> /** Timer 間接事件目標代理 */ @interface WeakTimerTarget : NSObject @property (nonatomic, weak) id target; @property (nonato
閱讀全文
posted @ 2022-05-12 17:50
HJiang
閱讀(101)
推薦(0)
posted @ 2018-09-06 21:45
HJiang
閱讀(118)
推薦(0)
posted @ 2018-09-06 21:38
HJiang
閱讀(105)
推薦(0)
摘要:
WCDB WCDB是一個高效、完整、易用的移動數據庫框架,基于SQLCipher,支持iOS, macOS。 WCDB for iOS/macOS 基本特性 易用,WCDB支持一句代碼即可將數據取出并組合為object。 WINQ(WCDB語言集成查詢):通過WINQ,開發者無須為了拼接SQL的字符
閱讀全文
posted @ 2018-01-10 20:28
HJiang
閱讀(1291)
推薦(0)
摘要:
WKWebView加載問題 baseURL需要注意 其中2個方式是ios9以后提供的 方法參數baseURL,此參數是html加載的資源是基于的基礎路徑,也可以理解為資源加載引入的相對路徑,一般為[[NSBundle mainBundle] bundleURL], 如果設置的是bundleURL那么
閱讀全文
posted @ 2017-12-01 15:52
HJiang
閱讀(2522)
推薦(0)
摘要:
UIWebView使用JavaScriptCore實現JS與OC互相調用,。它是從iOS7開始加入的,用 Objective-C 把 WebKit 的 JavaScript 引擎封裝了一下,提供了簡單快捷的方式與JavaScript交互。 1、簡要介紹JavaScriptCore JavaScrip
閱讀全文
posted @ 2017-11-14 14:39
HJiang
閱讀(463)
推薦(0)
摘要:
使用WKWebView的時候,如果想要實現JS調用OC方法,除了攔截URL之外,還有一種簡單的方式。那就是利用WKWebView的新特性MessageHandler來實現JS調用原生方法。 MessageHandler 是什么? WKWebView 初始化時,有一個參數叫configuration,
閱讀全文
posted @ 2017-11-14 14:38
HJiang
閱讀(2624)
推薦(0)
摘要:
JS調用原生OC篇 方式一 第一種方式是用JS發起一個假的URL請求,然后利用UIWebView的代理方法攔截這次請求,然后再做相應的處理。我寫了一個簡單的HTML網頁和一個btn點擊事件用來與原生OC交互,HTML代碼如下: 然后在項目的控制器中實現UIWebView的代理方法: 注意:1. JS
閱讀全文
posted @ 2017-11-14 14:36
HJiang
閱讀(476)
推薦(1)
摘要:
WKWebView特性: 在性能、穩定性、功能方面有很大提升. 允許JavaScript的Nitro庫加載并使用(UIWebView中限制). 支持了更多的HTML5特性. 高達60fps的滾動刷新率以及內置手勢 將UIWebViewDelegate與UIWebView重構成了14類與3個協議 基本
閱讀全文
posted @ 2017-11-14 14:33
HJiang
閱讀(4532)
推薦(1)
摘要:
UIWebView的基礎使用 屬性: UIWebView代理: 如果頁面上的鏈接需要進行攔截處理可以在一下方法中處理,通過返回值控制是否允許加載鏈接頁面內容,YES:記載頁面內容,NO:不允許; UIWebViewNavigationType枚舉值 讓UIWebView更加接近Native 某些情況
閱讀全文
posted @ 2017-11-14 14:32
HJiang
閱讀(930)
推薦(0)
摘要:
iOS企業版app部署到服務器 .正對ios升級得ios7 以后,plist文件必須放到 https得服務器上了,http不可以用了 部署具體過程 準備文件:plist文件,ipa安裝包,html下載頁面 .plist參照模板如下 ipa安裝包放入plist指定的software-package安裝
閱讀全文
posted @ 2017-11-13 15:55
HJiang
閱讀(4211)
推薦(0)
摘要:
以下是一些加密的思路和加密方式 1.對數據庫文件進行加密 2.對存儲的內容進行加密,比如對某些重要字段進行加密,加密方式可以采用AES ,Base64,MD5等,其中MD5加密不可逆. 以下內容采用SQLCipher對CoreData數據庫內容進行加密. SQLCipher 采用AES 256位對s
閱讀全文
posted @ 2017-11-11 15:23
HJiang
閱讀(547)
推薦(0)
摘要:
CoreData數據庫結構升級和數據遷移 數據庫遷移步驟 1.選中.xcdatamodeld文件,然后點擊Xcode菜單editor->Add Model Version 比如取名:Model.xcdatamodel 2.取一個Version名字,Based on model是基于現有Model文件
閱讀全文
posted @ 2017-11-11 15:22
HJiang
閱讀(754)
推薦(0)
posted @ 2017-11-11 15:21
HJiang
閱讀(160)
推薦(0)
摘要:
CoreData簡介 CoreData是一門功能強大的數據持久化技術,位于SQLite數據庫之上,它避免了SQL的復雜性,能讓我們以更自然的方式與數據庫進行交互。CoreData提供數據--OC對象映射關系來實現數據與對象管理,這樣無需任何SQL語句就能操作他們。CoreData數據持久化框架是Co
閱讀全文
posted @ 2017-11-11 10:29
HJiang
閱讀(360)
推薦(0)
摘要:
網絡請求: NSURLConnection 發送同步請求: nsurlconnection發送同步請求是阻塞式,會阻塞當前線程 發送異步請求: nsurlconnection發送異步請求底層是開啟子線程發送請求,回調默認是在主線程中回調,如果需要在子線程中回調可以設置代理隊列setDelegateQ
閱讀全文
posted @ 2017-09-18 22:37
HJiang
閱讀(332)
推薦(0)
posted @ 2017-09-16 19:32
HJiang
閱讀(189)
推薦(0)
摘要:
方法調用時機 相同點: 程序啟動都只會執行僅且一次,再次怎么調用使用類都不會執行了. 不同點: 方法調用時機不一樣. > + load程序啟動類加載時就會調用,不管該類是否有使用或有Import都會執行 > + initialize 程序啟動后,只有類使用時都會觸發,包括調用類的類方法或對象方法;
閱讀全文
posted @ 2017-09-09 17:13
HJiang
閱讀(406)
推薦(0)
摘要:
可以使用GCD創建定時器 創建定時器: 注意創建gcd定時器timer后,需要保存timer,需要有個引用引用timer,要不然timer會銷毀 取消定時器 總結 GCD定時器 1.時間調度很準確,時間是以納秒為單位,比NSTimer更加精確 2.GCD是不受runloop的影響, 比如:拖動scr
閱讀全文
posted @ 2017-09-09 11:19
HJiang
閱讀(525)
推薦(0)
摘要:
Runtime是什么? runtime是OC底層的一套C語言的API(引入 <objc/runtime.h> 或<objc/message.h>),編譯器最終都會將OC代碼轉化為運行時代碼,底層是通過runtime創建的對象. 另外利用runtime 可以做一些OC不容易實現的功能 .動態交換兩個方
閱讀全文
posted @ 2017-09-04 23:16
HJiang
閱讀(253)
推薦(0)
摘要:
runloop運行流程圖 定時器 結論:如果定時器在主線程中開啟,可以正常運行;定時器在子線程中開啟,無法正常運行; 如果對應線程沒有 RunLoop 該方法也會失效,也就是說currentRunloop中 沒有timer,沒有source,也沒有OBServer,添加 [NSRunLoop cur
閱讀全文
posted @ 2017-09-04 23:00
HJiang
閱讀(580)
推薦(0)
摘要:
dispatch_apply,可以并發的循環迭代,性能上可以提高,前提是循環不在乎迭代的順序 如果不想讓在當前線程參與迭代任務,可以把整個迭代任務包含在一個新的線程中 (優先采用此方式), 如: 但此方式需要注意一個問題,就是新開的線程包含的迭代任務,不要是同一個隊列,要不然整個迭代任務會在同一個線
閱讀全文
posted @ 2017-09-02 21:20
HJiang
閱讀(341)
推薦(0)
摘要:
GCD提供了信號semaphore來控制線程并發數,提供一下三個函數 dispatch_semaphore_create(<#long value#>) // 創建信號semaphore,value參數為任務并發同時執行時線程最大并發數 dispatch_semaphore_wait(<#dispa
閱讀全文
posted @ 2017-09-02 20:43
HJiang
閱讀(686)
推薦(0)
摘要:
dispatch_once 在dispatch_once block中的代碼在程序啟動到程序退回只會執行一次,如:不管for循環多少,只會一次打印 利用dispatch_once實現單粒模式 單粒模式(不管以任何方式創建對象,內存中永遠只會有且僅有一份該對象的地址) 實現單粒,需要步驟: 1.提供一
閱讀全文
posted @ 2017-09-01 18:02
HJiang
閱讀(274)
推薦(0)
摘要:
單粒模式宏定義 宏中使用##,傳入參數作為shared方法名稱: 定義開發模式和發布模式條件宏 替換系統NSLog
閱讀全文
posted @ 2017-09-01 11:04
HJiang
閱讀(298)
推薦(0)
摘要:
OC可變參數: 使用__attribute__((sentinel))語法可以告訴編譯器這是一個需要哨兵參數的函數。它的作用就是告訴函數沒有參數了。這也是為什么ObjC中[NSArray arrayWithObjects: ...,nil]最后必須以nil參數結尾的原因
閱讀全文
posted @ 2017-09-01 11:01
HJiang
閱讀(435)
推薦(0)
摘要:
GCD全稱Grand Central Dispatch,是Apple提供的一套底層API,提供了一種新的方法來進行并發程序編寫,它的API包含在libdispatch庫中. 覺得需要理解GCD中的三個要點: 1.同步異步(sync,async) sync表示同步,不會開啟新線程,任務是在當前線程中執
閱讀全文
posted @ 2017-08-29 14:51
HJiang
閱讀(287)
推薦(0)
摘要:
.計算時間間隔多少秒,可以使用到計算程序代碼執行時間 方式1: 方式2: 方式3: 計算N天前日期 當前2017-09-16 運行結果: 2017-09-18
閱讀全文
posted @ 2017-08-25 00:02
HJiang
閱讀(241)
推薦(0)
摘要:
綜合項目 iOSProject 國內優秀框架 YYKit YYKit 是一組龐大、功能豐富的 iOS 組件。 為了盡量復用代碼,這個項目中的某些組件之間有比較強的依賴關系。為了方便其他開發者使用,我從中拆分出以下獨立組件: YYModel — 高性能的 iOS JSON 模型框架。 YYCache
閱讀全文
posted @ 2017-08-22 17:19
HJiang
閱讀(441)
推薦(0)