Swift and Objc interoperability
GCD 閱讀
Swift Tips GCD 延時調用
1 | // 创建目标队列 |
1 | import Foundation |
調用方式
1 | let task = delay(5) { println("拨打 110") } |
swift GCD使用指南
Dispatch Queue
- Serial Dispatch Queue,FIFO(先進先出),一次只能執行一個
- Concurrent Dispatch Queue,并发执行队列里的任务
Queue Types (型態dispatch_queue_t
)
- Main queue(Serial Queue)
dispatch_get_main_queue()
- Global Dispatch Queues(Concurrent Queue)
- high
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0)
- default
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)
- low
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,0)
- background
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0)
- high
- 自訂
- Serial
dispatch_queue_create("com.xxx", DISPATCH_QUEUE_SERIAL)
- Concurrent
dispatch_queue_create("com.xxx", DISPATCH_QUEUE_CONCURRENT)
- Serial
1 | dispatch_queue_t low = dispatch_queue_create("low",DISPATCH_QUEUE_SERIAL); |
丟入GCD的任務無法取消
dispatch_after 是指過一段時間之後把任務丟入GCD因此可以抽回
Dispatch Group
1 | dispatch_group_t group = dispatch_group_create(); |
WWDC 2014 QoS
- It is recommended to use quality of service class values to identify the
- well-known global concurrent queues:
- QOS_CLASS_USER_INTERACTIVE
- QOS_CLASS_USER_INITIATED
- QOS_CLASS_DEFAULT
- QOS_CLASS_UTILITY
- QOS_CLASS_BACKGROUND
*
- QOS_CLASS_BACKGROUND
- The global concurrent queues may still be identified by their priority,
- which map to the following QOS classes:
- DISPATCH_QUEUE_PRIORITY_HIGH: QOS_CLASS_USER_INITIATED
- DISPATCH_QUEUE_PRIORITY_DEFAULT: QOS_CLASS_DEFAULT
- DISPATCH_QUEUE_PRIORITY_LOW: QOS_CLASS_UTILITY
- DISPATCH_QUEUE_PRIORITY_BACKGROUND: QOS_CLASS_BACKGROUND
原文 : Design Patterns: Dependency Injection
即使相依性注入是一個很稀少教給初心者的話題,他是個值得更多關注的設計模式
。
許多開發者避免相依性注入,因為他們並不曉得他的意義,或者因為他們認為不需要它。
在這篇文章,我會嘗試說服你相依性注入的價值所在。
要做到這一點,我將會以相依性注入最簡單的形式,來說明它多麼的簡單。
GCM!!
最近又出現一些新的狀況,主要是因為 Android 的 Shared Preferences 不太可靠的關係。
而且我們主要目標對象是公車站牌(Android 板子),希望有遠端更新,遠端操作…。
並期望放出就能自主活得好好滴。
但是存放在 Shared Preferences 的站牌ID,就隨著多次操作後就跟著 Shared Preferences 一同消失了!
可以參考下面這篇:
在他們的例子,會有將近 0.2% ~ 0.3% 使用者的 Shared Preferences 會遺失掉。
推薦的解決方式是使用 DB。
於是我們也就緊急發佈出 DB 版本。
但是已經消失的該怎麼辦哩??
XCode Environment Variables
Launch Arguments & Environment Variables
gdavis / gist:6670468
Xcode Build Setting Reference
How do I print a list of “Build Settings” in Xcode project?
前陣子花了一段時間 survey 一些 CI 的東西,從最一開始知道說有 Travis CI 以及 Drone.io。
但是這兩種屬於網頁服務,所以在語言的選擇上有些限制,以及對 Private Repo 的價格都不便宜。
於是將目光轉向一些可以自己架設的 CI Server,且 Server 如果是自己架設的話,可以建立一個比較接近開發時的測試環境。如:
- Jenkins
- Strider
- Drone
首先嘗試的 Jenkins 老爹,但是有點被那眾多的 plugin 以及設定嚇到(加上老大似乎不喜歡)。
第二個嘗試的是 Drone,但是兩次都因為設定沒設完,首頁只會把你導引到如何設定的說明頁
。
最後是 Strider,第一眼的觀感良好,實際在玩的時候也是一堆坑 XD。
Strider On Ubuntu
用 Ubuntu 去 build Strider 的過程中,會有機會遇到一些問題。
這些問題在 Strider Github 首頁上都有提到。
比較詳細的解法可以去參考他的 Github issue。