我們都直到,第三方輸入法比如搜狗輸入法有個經典的手勢操作——在鍵盤上左右劃動即可移動光標。而這個功能我自己也十分的常用,所以,我想要自己來實現它。
首先我想到的就是 UISwipeGestureRecognizer ,不過結果可想而知,劃動一次只能移動一格光標,這可不是我想要[……]
我們都直到,第三方輸入法比如搜狗輸入法有個經典的手勢操作——在鍵盤上左右劃動即可移動光標。而這個功能我自己也十分的常用,所以,我想要自己來實現它。
首先我想到的就是 UISwipeGestureRecognizer ,不過結果可想而知,劃動一次只能移動一格光標,這可不是我想要[……]
在一開始,Swift 裡並沒有提供正則表達式的支持,所以我們只能自己來封裝,比如說寫一個結構體,像這樣:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
struct MyRegex { let regex: NSRegularExpression? init(_ pattern: String) { regex = try? NSRegularExpression(pattern: pattern, options: .CaseInsensitive) } func match(input: String) -> Bool { if let matches = regex?.matchesInString(input, options: [], range: NSMakeRange(0, (input as NSString).length)) { return matches.count > 0 } else { return false } } } |
其實現在 Swift 已經有了對正則表達式的支持,我們只需要這樣:
[crayon-6909346d6844a300247[……]
大多數情況下,如果我們想要獲取數組中某一段的內容(比如說從前到中間,或者數組最後的某些值),這時候就需要遍歷數組來給新的數組賦值:
|
1 2 3 4 5 6 7 |
let fixedArray = [1,2,3,4,5,6] var myArray:[Int] = [] for (i,n) in fixedArray.enumerate() { if i > 3 {break} myArray.append(n) } |
這樣數組短了還好說無所謂,但如果數組比較大而我們需要的值又比較多,那遍歷起來顯然就很浪費時間。[……]
使用 python 的時候,經常需要下載一些第三方的框架,好在 python 也有類似 apt 的包管理工具,果仁。
不過,pip 雖然能夠管理包,卻沒有切換鏡像源的功能,而我們下載的包,大多數都在國外大型的代碼託管服務器上,這就導致了往往幾百KB的包要下載一個小時。
[……]
國內似乎沒有人願意來為 iOS 系統寫一個輸入法,除了幾個寡頭大公司在做以外就沒有別的了。走近了中國特有的蘋果生態平台看看,發現其實裡邊都是空殼子,有意義的應用真的是少的可憐。
落格博客最近正在致力於給 iOS 平台寫第一款能真正支持碼表的雙拼輸入法,第一個兼容的雙拼方案自然是開放的“小鶴雙拼”,[……]
說起 SQLite,它和你熟知的 MySQL 一樣,都是關係型數據庫管理系統,但與後者不同的地方在於,它完全不需要對應的獨立服務器!
一般說起來,SQLite 都是以文件的形式存在,大多用在應用的內嵌儲存裡。通過在應用代碼裡加載 SQLite 庫,就可以很方便地直接存取 SQL[……]
nRF24L01 是一款工作在 2.4~2.5GHz 世界通用 ISM 頻段的單片無線收發機晶片。無線收發機包括:頻率發生器、增強型 SchockBurstTM 模式控制器、功率放大器、晶體振盪器、調製器、解調器。輸出功率頻道選擇和協定的設置可以通過 SPI 介面進行設置。
方便的設置以及極低[……]
在 Mac 上玩 Arduino,除了可以使用官方的那個簡單的 IDE 之外,還可以選擇使用 Xcode 來進行開發。
使用 embedXcode 外掛程式即可讓 Xcode 搖身一變成為嵌入式開發 IDE,包括了本地編譯、上傳等全套功能。
不過,在使用標準庫的時候就出了問題,比如上[……]
在寫代碼的過程當中,我們總會遇到需要保證全局只有一個實例的時候,這個時候就要使用單件模式。
單件模式——它確保了一個類只有一個實例,並提供一個全局訪問點。
那麼怎麼實現單件模式呢?我們來看看最經典的 Java 代碼,該怎麼實現這個 單件模式。
我們在網上隨便搜索“java 單件模式”就能找[……]
我們都知道,比如 Swift 、 Python 裡,都不需要特別的去聲明一個變量的類型——它們雖然是類型安全的語言,卻可以動態地在上下文中幫你推斷變量的類型。
Python 不用你做什麼,寫一個名字就是默認聲明了一個變量;而 Swift,則更接近我們的題目,它也使用了[crayon-69093[……]
前段時間我寫過一篇文章,說是時候使用白名單來翻牆了,不過那個白名單已經過期好久,用起來不是那麼順暢了,後來我就誇下海口說:我要自己實現一個爬蟲,來爬取中國的網站域名,好更新白名單。
好吧,總之這個爬蟲是寫好了然後上線爬取了一萬多的,不過最後我找到了前人做的更好的方案,於是這個爬蟲項目還是廢棄了[……]
在使用 Python 做網絡編程的時候難免會遇到字符串與字節流的轉換,這裡我們記錄以下幾種常用的方法:
首先是字節數組轉字符串,也就是str:
|
1 2 3 4 5 |
b = b'some byte array' str(b, encoding = "utf-8") #or bytes.decode(b) |
然後是字符串轉為字節數組:
[crayon-6909346d69fe88433[……]
大多數情況下,人們用編程語言是否會隱式地轉換數據類型來判斷一門語言是否為弱類型語言,比如 C。
而實際上,對於除了比較經典的語言外,大部分人對於其他常見語言的強、弱類型是分不清楚的——或者說,是不一致的。因此總會有人來爭論它。如果我們以開篇的概念來作為基礎,那麼矛盾就會顯現:
比如PASC[……]
我們在進行網路開發的時候,難免要從網路伺服器中獲取資料,很多時候還需要給伺服器提交資料,就現在來說,一般我們都會習慣使用 JSON 格式的資料,因為它方便好用,這次我們就一起來看看,如何用 Swift 發送 JSON-RPC 命令並獲取回復。
JSON-RPC是一個無狀態且輕量[……]
今天在練習設計模式的時候忽然發現 Swift 裡是沒有棧的——就是 Stack 類。由於我是照著 JAVA 版的設計模式來學習的,所以我只好自己看著實現一個了。
不過說起來,在蘋果官方手冊的「泛型」一章中還真有個棧的栗子,它是用結構體實現的。這也倒是符合了 Swift 一貫的風格——畢竟, 小號[……]
更新:一轉眼 5 年過去了,這篇文章也無效了……現在 Xcode 已經不允許隨意安裝插件,目前唯一推薦的也就一個 Xcode的Swift格式,各位,共勉。
—
在 OSX 上進行開發,那你必然少不了和這個著名的 IDE 打交道。畢竟,我們使用IDE就是為了提高生產力[……]
經朋友推薦,遇到這麼一篇介紹併發的好文章,我把它翻譯過來給大家讀一讀。我非專業翻譯人員,水準有限。差錯在所難免,各位讀者如果發現文內有誤,歡迎留言斧正!
R0uter
文章譯自 appcoda iOS Concurrency: 入門的NSOperation一[……]