這裡講述的是swift 學習筆記[1]的相關引見,詳細代碼請看下文
最近在IMOOK(網站)上自學了下swift , 總結下swift絕對其他言語的不同之處 , 方便熟習其他言語的順序員,熟習swift言語的特性.
1. swift 的特別之處就是可以在原有的類上 , 運用 protocol (相似java接口) 取得泛型的作用 .
2. 經過extension可以擴展普通的class, struct, 也可以擴展protocol, 運用protocol類都擁有公共的擴展.
1 protocol Readable { 2 3 var programLang:String 4 5 var programeSourceUrl:String 6 7 var maxExecuteSecounds:Long 8 9 } 10 11 protocol Execuable { 12 func execute() 13 } 14 15 16 17 class BrowserScript : Readable { 18 19 var progameLang:String = "js" 20 var programeSourceUrl:String = "http://xxxx.com/adfd.js" 21 var maxExecuteSecounds:Long=2023 init() { 24 println("browser script init") 25 } 26 27 28 execute 29 30 } 31 32 extenstion BrowserScript:Executable { 33 execute() { 34 JavaCoreScript.run(programeSourceUrl); 35 } 36 } 37 38 39 //test: 40 41 func executeTask<T:Executable>(executor:T) { 42 executor.execute(); 43 } 44 45 46 executeTask(BrowserScript()); //不會報錯 47 48 49
經過協議再不修正BrowserScript類定義文件的前提下, 為BrowserScript添加了execute的才能.extenstion 可以用在IOS內置,各種庫,自己編寫的恣意類,函數體,Enum,由於根本數據類型實踐是構造體,所以也可以extension功用.
在swift官方的完成中少量運用extension完成功用,swift是面向協議擴展的言語.
3. swift的問號
swift 問號相似 var card:String? ,有問號表示這個變量可以為空(nil),實踐也是Optional枚舉類型,有值時分用Optional.Some()包裝,運用時分需求解包,假如為nil實踐為Optional.None().
解包的辦法就是
if let card = card { println("your card is ",card); }
4. Int,Long,String,Dictionary,Array 其實都是構造體,struct.
構造體和類的區別就是,構造體傳值都是內存拷貝, 類援用普通都是援用.
5. weak 關鍵字.
weak 關鍵字表逞強援用, 就是擁有這個weak變量的對象不持有這個變量的援用.援用計數是內存回收的一種辦法,為0時零碎擔任回收內存,假如對象A包括屬性B強援用屬性,直接a=nil, B 不會回收. 假如屬性B設置為弱援用,自身設置屬性b, b的援用計數不增長. weak用在此屬性可以為空的狀況.
6.unowned 關鍵字.
unowned 相當於weak,不過這個屬性不能為空.屬性被設置為空,順序解體直接加入.所以很少用.
7. 函數/辦法.
7.1 辦法定義:
func method1(_ x1:Int,_ x2 :Int) ->Int { //do something }
var sum = method1(1,2);
下面的參數中的下劃線是外參數名 ,地位在形參x1後面 ,假如是下劃線,表示調用時分不必寫外參稱號.假如是有名字,調用時分需求寫外參數名,參加第二個參數的下劃線交換成num2,調用時需求寫成:
var sum2 = method1(1,num2:2);
最後的->表示之後跟著的是前往值 ,前往值可以是一個值,也可以是函數(辦法).
辦法可以直接寫閉包(匿名函數) .
舉例: 學生報名到學校, 前往流程處置函數, 詳細就是執行了發送短信叫家長交學費. 前往的函數參數是家長的相關聯絡方式.
func add(student:Student,to school:School) ->(String)->{sendMsgToParentsFee($0);}
下面的前往值是最後那個參數是String類型,詳細執行是{}包括著的函數.外面的$0 表示參數中的第一個參數,多個參數順次累加表示.
調用 :
x.add(student:studentObj,to:schoolObj)
多多關注本站,我們將為您搜集更多的swift編程開發相關文章.
【AFNetWorking3.0 完成同步懇求】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!