原创 自定義NSOperation進行多線程之間的通信(通知、代理、block)

每一個應用程序至少有一個主線程。線程的工作就是去執行一系列的指令。在Cocoa Touch中,主線程包含應用程序的主運行迴路。幾乎所有你寫的代碼都會在主線程中執行,除非你特別創建了一個單獨的線程,並在這個新線程中執行代碼。線程有兩個顯著的

原创 iOS中UITextView的字數限制

通常在開發中, 有些時候會碰到這樣的需求: 希望輸入框有最大字數限制,以及在輸入文字時,提示剩餘可以輸入的字數。例如以下: 由於UITextField用於單行輸入,今天主要介紹一下多行輸入下的UITextView。 這裏需要用到 通知:

原创 Swift基礎1.5——基本語法——集合

這一篇,簡單介紹一下Swift中的數組與字典 數組使用 [] 定義,這一點與 OC 相同//: [Int] let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 遍歷// 順序遍歷數組 for s

原创 iOS中關於block使用的一些總結

1、block跟swift中的閉包(closure)基本一樣,都常用於值的回調,特別是在多線程的網絡請求回調中,使用起來極爲方便。 2、block的開頭是“^”,接着是由小括號所報起來的參數列,行爲主體由大括號包起來。block有四種類

原创 Swift 中使用 SQLite——修改和刪除數據

本文主要介紹在SQLite中修改數據、刪除數據: 更新記錄 /// 將當前對象信息更新到數據庫 /// /// - returns: 是否成功 func updatePerson() -> Bool { guard let na

原创 Swift 中使用 SQLite——批量更新(事務處理)

本文是Swift 中使用 SQLite系列的收官之作,介紹一下在數據庫中的批量更新。 事務 在準備做大規模數據操作前,首先開啓一個事務,保存操作前的數據庫的狀態開始數據操作如果數據操作成功,提交事務,讓數據庫更新到數據操作後的狀態如果數

原创 iOS 9中UIDynamics實現真正的圓形碰撞

我們常見的碰撞都是矩形碰撞,即使修改了view的cornerRadius,讓圖片看上去像圓形,但碰撞的時候,依然是矩形碰撞。 UIDynamics 的第一個版本帶有碰撞系統(在 UICollisionBehavior 中)只支持矩

原创 Swift基礎3.3——便利構造函數

默認情況下,所有的構造方法都是指定構造函數 Designatedconvenience 關鍵字修飾的構造方法就是便利構造函數便利構造函數具有以下特點: 可以返回 nil只有便利構造函數中可以調用 self.init()便利構造函數不能被重

原创 Swift基礎1.4——基本語法——字符串

在 Swift 中絕大多數的情況下,推薦使用 String 類型 String 是一個結構體,性能更高 String 目前具有了絕大多數 NSString 的功能String 支持直接遍歷NSString 是一個 OC 對象,性能略差S

原创 Swift基礎2.1——函數

函數是執行特定任務的代碼自包含塊。給定一個函數名稱標識, 當執行其任務時就可以用這個標識來進行"調用"。 Swift中的每個函數都有一個類型,包括函數的參數類型和返回類型。您可以方便的使用此類型像任何其他類型一樣,這使得它很容易將函數作爲

原创 Swift基礎3.2——重載構造函數

重載構造函數 Swift 中支持函數重載,同樣的函數名,不一樣的參數類型/// `重載`構造函數 /// /// - parameter name: 姓名 /// - parameter age: 年齡 /// /// - return

原创 CocoaPod常用命令

整理一下CocoaPod的常用命令,供大家參考。 簡介 CocoaPods 是 iOS 非常常用的類庫管理工具作爲 iOS 程序員,掌握 CocoaPods 的常用終端命令,是必不可少的基本技能集成框架命令 # 創建默認的 Podfile

原创 常用 SQL介紹

創建表 /* 創建數據表 CREATE TABLE '表名' ( '字段名' 類型(INTEGER, REAL, TEXT, BLOB) NOT NULL 不允許爲空

原创 Swift基礎3.1——構造函數

構造函數是一種特殊的函數,主要用來在創建對象時初始化對象,爲對象成員變量設置初始值,在 OC 中的構造函數是 initWithXXX,在 Swift 中由於支持函數重載,所有的構造函數都是 init 非 Optional 屬性,都必須

原创 Swift 中使用 SQLite——查詢數據

本文主要介紹如何查詢 SQLite 結果集,以及封裝 SQLite 的操作方法。 準備測試代碼 /// 從數據庫中加載 person 數組 class func persons() -> [Person]? { // 1.