原创 Swift(學習):錯誤處理(自定義錯誤,do-catch捕捉錯誤,處理Error,try?,try1,rethrows,defer,assert,fatalError)

錯誤類型 開發過程常見的錯誤: 語法錯誤(編譯報錯) 邏輯錯誤  運行時錯誤(可能會導致閃退,一般也叫做異常 ...... 自定義錯誤 Swift中可以通過Error協議自定義運行時的錯誤信息 enum SomeError : Erro

原创 Swift 學習(十三):多態(實現原理)

多態:父類指針指向子類對象 多態的實現原理: OC: Runtime C++: 虛表(虛函數表) Swift:類似於虛表 多態代碼: class Animal { func speak() { print("An

原创 Swift學習:內存管理,weak,unowned,autoreleasepool,循環引用,escaping,指針

內存管理 跟OC一樣,Swift也是採取基於引用計數的ARC內存管理方案(針對堆空間)  class Person { deinit { print("Person.deinit") } } print

原创 Swift:從OC到Swift

只能被class(類)繼承的協議 只能被class(類)繼承的協議有三種: 繼承自AnyObject 繼承自class 被@objc修飾的類 protocol Runnable1: AnyObject { } protocol Runn

原创 IOS中使用的C語言unlink函數

功能:刪除一個名字(某些情況下刪除這個名字所指向的文件) 頭文件:#include<unistd.h> 函數原型: int unlink(const char* pathname); 功能詳解:unlink從文件系統中中刪除一個名字,若這

原创 Swift學習:標準庫源碼解析

Swift源碼簡介 Swift於2015年正式開源,github地址: https://github.com/apple/swift 幾個可能會經常看的目錄  docs:一些文檔 stdlib:Swift源碼 lib:C++源碼 incl

原创 Swift學習:項目實戰要點(常用三方庫及使用,Unit Test單元測試)

常用的Swift第三方庫 網絡請求: https://github.com/Alamofire/Alamofire 圖片下載: https://github.com/onevcat/Kingfisher JSON訪問: https://g

原创 Swift學習:響應式編程RxSwift

響應式編程 響應式編程(Reactive Programming,簡稱RP) 也是一種編程範式,於1997年提出,可以簡化異步編程,提供更優雅的數據綁定  一般與函數式融合在一起,所以也會叫做:函數響應式編程(Functional Rea

原创 Swift(學習): 面向協議編程

面向協議編程 面向協議編程(Protocol Oriented Programming,簡稱POP)  是Swift的一種編程範式, Apple於2015年WWDC提出 在Swift的標準庫中,能見到大量POP的影子 同時,Swift也是

原创 Swift(學習):函數式編程

Array的常見操作 Array的map函數: var arr = [1, 2, 3, 4] //map映射, 你傳入Int,它可以返回Int數組,也可以返回字符串數組 var arr2 = arr.map { i in

原创 Swift學習: String,Swift與OC的橋接

Swift的字符串類型String,跟OC的NSString,在API設計上還是有較大差異 //空字符串 var emptyStr1 = "" var emptyStr2 = String() var str1: String = "

原创 Swift(學習):從OC到Swift

MARK、TODO、FIXME  // MARK: 類似於OC中的 #pragma mark // MARK: - 類似於OC中的 #pragma mark -  //TODO: 用於標記未完成的任務 // FIXME: 用於標記待修復的

原创 Swift(學習):模式匹配

模式(Pattern) 什麼是模式? 模式是用於匹配的規則,比如switch的case、捕捉錯誤的catch、if\guard\while\for語句的條件等 Swift中的模式有 通配符模式(Wildcard Pattern)  標識符

原创 Swift(學習):字面量

字面量(Literal) 上面代碼中的10、false、"Jack"就是字面量 常見字面量的默認類型 public typealias IntegerLiteralType = Int  public typealias FloatLi

原创 Swift學習:內存管理

內存管理 跟OC一樣,Swift也是採取基於引用計數的ARC內存管理方案(針對堆空間)  class Person { deinit { print("Person.deinit") } } print