Time of Update: 2017-01-18
Objective-C和C的API常常會需要用到指標。Swift中的資料類型都原生支援基於指標的Cocoa API,不僅如此,Swift會自動處理部分最常用的將指標作為參數傳遞的情況。這篇文章中,我們將著眼於在Swift中讓C語言指標與變數、數組和字串共同工作。####用以輸入/輸出的參數指標C和Objective-C並不支援多傳回值,所以Cocoa
Time of Update: 2017-01-18
參數外部變數名一般情況下你可以不指定外部變數名,直接調用函數:複製代碼 代碼如下:func helloWithName(name: String, age: Int, location: String) { println("Hello \(name). I live in \(location) too. When is your \(age + 1)th birthday?")}helloWithName("Mr. Roboto", 5,
Time of Update: 2017-01-18
控制流程基本上大同小異,在此列舉幾個比較有趣的地方。switchBreak文檔原文是 No Implicit Fallthrough ,粗暴的翻譯一下就是:不存在隱式貫穿。其中 Implicit 是一個經常出現的詞,中文原意是:“含蓄的,暗示的,隱蓄的”。在 Swift 中通常表示預設處理。比如這裡的隱式貫穿,就是指傳統的多個 case 如果沒有 break 就會從上穿到底的情況。再例如 implicitly unwrapped optionals
Time of Update: 2017-01-18
數組重複值的初始化除了普通的初始化方法,我們可以通過 init(count: Int, repeatedValue: T) 來初始化一個數組並填充上重複的值:複製代碼 代碼如下:// [0.0,0.0,0.0]var threeDoubles = [Double](count:3,repeatedValue:0.0)帶索引值的遍曆我們可以用 for in 遍曆數組,如果想要 index 的話,可以用 enumerate<Seq : SequenceType>(base: Seq) :
Time of Update: 2017-01-18
字串簡介String 中的字串是實值型別,傳遞的時候會對值進行拷貝,而 NSString 的字串傳遞則是引用。我們可以用 for in 遍曆字串:複製代碼 代碼如下:var a : String = "a"for c in "Hello" { println(c)}可以通過 countElements 計算字串的字元數量:複製代碼 代碼如下:countElements("1234567") // 7不過要注意的是,countElements 和
Time of Update: 2017-01-18
空值合并運算子和區間運算子今天主要看的內容是 Swift 中的基本運算子。記錄一下。Nil Coalescing Operatora ?? b 中的 ?? 就是是空值合并運算子,會對 a 進行判斷,如果不為 nil 則解包,否則就返回 b 。var a: String? = "a"var b: String? = "b"var c = a ?? b // "a"a = nilc = a ?? b // "
Time of Update: 2017-01-18
在一個類的執行個體被釋放之前,解構函式會被調用。用關鍵字deinit來定義解構函式,類似於初始化函數用init來定義。解構函式只適用於class類型。1、析構過程原理Swift 會自動釋放不再需要的執行個體以釋放資源。如自動引用計數那一章描述,Swift
Time of Update: 2017-01-18
一個類可以從另外一個類中繼承方法,屬性或者其它的一些特性。當一個類繼承於另外一個類時,這個繼承的類叫子類,被繼承的類叫父類。繼承是Swift中類區別於其它類型的一個基本特徵。Swift中的類可以調用父類的方法,使用父類的屬性和下標,還可以根據需要使用重寫方法或者屬性來重新定義和修改他們的一些特性。Swift可以協助你檢查重寫的方法和父類的方法定義是相符的。類還可以為它繼承的屬性添加觀察者,這樣可以能夠讓它在一個屬性變化的時候得到通知。屬性觀察者可以被添加給任何屬性,不管它之前是儲存屬性還是計算屬
Time of Update: 2017-01-18
閉包(Closures)是獨立的函數代碼塊,能在代碼中傳遞及使用。Swift中的閉包與C和Objective-C中的代碼塊及其它程式設計語言中的匿名函數相似。閉包可以在內容相關的範圍內捕獲、儲存任何被定義的常量和變數引用。因這些常量和變數的封閉性,而命名為“閉包(Closures)”。Swift能夠對所有你所能捕獲到的引用進行記憶體管理。NOTE假如你對“捕獲(capturing)”不熟悉,請不要擔心,具體可以參考Capturing Values(捕獲值)。全域函數和嵌套函數已在
Time of Update: 2017-01-18
函數是執行特定任務的代碼自包含塊。給定一個函數名稱標識,
Time of Update: 2017-01-18
可變參數函數指的是可以接受任意多個參數的函數,我們最熟悉的可能就是 NSString 的 -stringWithFormat:方法了。在 Objective-C 中,我們使用這個方法產生字串的寫法是這樣的:複製代碼 代碼如下:NSString *name = @"Tom";NSDate *date = [NSDate date];NSString *string = [NSString
Time of Update: 2017-01-18
與 Objective-C 不同,Swift 的初始化方法需要保證類型的所有屬性都被初始化。所以初始化方法的調用順序就很有講究。在某個類的子類中,初始化方法裡語句的順序並不是隨意的,我們需要保證在當前子類執行個體的成員初始化完成後才能調用父類的初始化方法:複製代碼 代碼如下:class Cat { var name: String init()
Time of Update: 2017-01-18
1.UITapGestureRecognizer 點擊/雙擊手勢複製代碼 代碼如下:var tapGesture = UITapGestureRecognizer(target: self, action: "handleTapGesture:") //設定手勢點擊數,雙擊:點2下 tapGesture.numberOfTapsRequired = 2 self.view.addGestureRecognizer(tapGesture)
Time of Update: 2017-01-18
今天有同行問我,如何在tableview的headerview中添加點擊方法,今天就來簡簡單單說明一下,在swift中添加點選手勢的方法是:複製代碼 代碼如下:imagepath.addGestureRecognizer(UITapGestureRecognizer(target: self, action:
Time of Update: 2017-01-18
與函數一樣,方法也存在重載,其重載的方式與函數一致。那麼作為構造器的特殊方法,是否也存在重載呢?答案是肯定的。一、構造器重載概念Swift中函數重載的條件也適用於構造器,條件如下:函數有相同的名字;參數列表不同或傳回值類型不同,或外部參數名不同;Swift中的構造器可以滿足以下兩個條件,代碼如下:複製代碼 代碼如下:class Rectangle { var width : Double var height :
Time of Update: 2017-01-18
我文章的中心是,以 Apple 目前給出的各種資料來看,這語言不會替代掉ObjC,它不是下一代的ObjC。它有很多缺點,使得它不足以做大型項目。這些缺點使得,Apple 自己都沒有使用它做 Mac/iOS 的 app。我不排除明年後年它有很大改進,但至少現在還沒有這端倪。因此,如果你會ObjC,你不需要去看它。但你如果問我這語言對普通開發人員重要不重要,我說重要,可以明確告訴你這一點--它是 Apple 在 WWDC 向全世界推出的重磅語言我怎麽能說它不重要? 它降低了入門的門檻。使得大量的
Time of Update: 2017-01-18
Swift 被設計用來無縫相容 Cocoa 和 Objective-C 。在 Swift 中,你可以使用 Objective-C 的 API(包括系統架構和你自訂的代碼),你也可以在 Objective-C中 使用 Swift 的 API。這種相容性使 Swift 變成了一個簡單、方便並且強大的工具整合到你的 Cocoa 應用開發工作流程中。這篇指南包括了三個有關相容性的重要方面方便你更好地利用來開發 Cocoa 應用:互用性 使你將 Swift 和 Objective-C 相接合,允許在
Time of Update: 2017-01-18
使用 Cocoa 現有的一些設計模式,是協助開發人員開發一款擁有合理設計思路、穩定的效能、良好的可擴充性應用的有效方法之一。這些模式都依賴於在 Objective-C 中定義的類。因為 Swift 與 Objective-C 的互用性,所以你依然可以在 Swift 代碼中使用這些設計模式。在一些情況下,你甚至可以使用 Swift 語言的特性擴充或簡化這些 Cocoa 設計模式,使這些設計模式更強大、更便於使用。委託(Delegation)在 Swift 和 Objective-C
Time of Update: 2017-01-18
作為一種可與 Objective-C 相互調用的語言,Swift 也具有一些與 C 語言的類型和特性,如果你的代碼有需要,Swift 也提供了和常見的 C 代碼結構混合編程的編程方式。基礎資料型別 (Elementary Data Type)Swift 提供了一些和 C 語言的基本類型如char,int,float,double等價的 Swift 基礎資料型別 (Elementary Data Type)。然而,這些 Swift 的核心基本類型之間並不能隱式的相互轉換,如
Time of Update: 2017-01-18
作為一門先進的程式設計語言,Swift 可以說吸收了眾多其他先進語言的優點,但是有一點卻是讓人略微失望的,就是 Swift 至今為止並沒有在語言層面上支援Regex。Regex的用處:判斷給定的字串是否符合某一種規則(專門用於操作字串)- 電話號碼,電子郵箱,URL...- 可以直接百度別人寫好的正則- 別人真的寫好了,而且測試過了,我們可以直接用-