初始Swift


Swift在2014開發(fā)者大會上提出后沟饥。幾乎每年都會更新維護摄凡,現在已經更新到2.0.
第一次使用swift炉峰。邊學swift当悔,邊做一些筆記分析傅瞻。希望能快速入門這門新語言吧~

Swift語言特點

作為一項蘋果獨立發(fā)布的支持型開發(fā)語言踢代,Swift語言的語法內容混合了Objective-C、JS嗅骄、Python胳挎,語法簡單、使用方便溺森、易學慕爬,大大降低了開發(fā)者入門的門檻。同時swift語言可以與Objective-C混合使用屏积,對于用慣了高難度Objective C語言的程序猿來說医窿,學會這個,更不在話下炊林!


使用條件
Xcode版本>=6.0
Mac系統版本>=10.9.3

1.常量和變量

let 和 val 聲明一個常量和變量姥卢。

2.OC和Swift混編,頭文件導入
當在swift系統文件中創(chuàng)建object文件時渣聚,需要導入object-C文件才可以使用oc類中的方法独榴。
當創(chuàng)建的時候,會提醒是否創(chuàng)建橋接奕枝。選擇時棺榔,即可
如圖:將oc頭文件放進去。


橋接Swift.png

swift與OC語法對比分析
3.swift 控件的創(chuàng)建

// 一個完整的btn
           let SwiftBtn =  UIButton ()
        SwiftBtn.frame = CGRectMake(0, 0, 100 ,100)
        SwiftBtn.setTitle("Swift大法好", forState: UIControlState.Normal)
        SwiftBtn.setTitleColor(UIColor .blackColor(), forState: UIControlState.Normal)
        SwiftBtn.backgroundColor = UIColor .redColor()
        SwiftBtn .addTarget(self, action: #selector(ViewController.ClickBtnSelect), forControlEvents: UIControlEvents.TouchUpInside)
        self.view .addSubview(SwiftBtn)

// 執(zhí)行點擊事件
 func ClickBtnSelect()  {
        NSLog("點擊了按鈕")
        print("點擊了按鈕")
        
    }

4.控件的懶加載

  // 懶加載
    let LazyBtn = UIButton()
    LazyBtn.frame = CGRectMake(120, 0, 100, 100)
    LazyBtn.setTitle("Swift懶加載", forState: UIControlState.Normal)
    LazyBtn.setTitleColor(UIColor .blackColor(), forState: UIControlState.Normal)
    LazyBtn.backgroundColor = UIColor .redColor()
    return LazyBtn
    }()

 // 調用部分
  self.view .addSubview(LazyBtn)

綜上:Swift真是一個自上而下倍权,簡潔掷豺,易學的代碼。薄声。

開始試著找一款APP模仿著學習吧当船。
我模仿的是維尼的小熊#小日子#,因為搜到了Swift源碼默辨。

5.訪問控制的認識
蘋果在發(fā)布了Xcode 6 Bate 4后為Swift添加了新的特性–訪問控制(Access Control) 并為此寫了文檔“The Swift Programming Language
具體內容來源
什么是訪問控制:
訪問控制可以限定你在源文件或模塊中訪問代碼的級別德频,限定哪些代碼允許被訪問,哪些代碼不允許被訪問缩幸。
適用范圍:
整個項目壹置。

You can assign specific access levels to individual types (classes, structures, and enumerations), as well as to properties, methods, initializers, and subscripts belonging to those types. Protocols can be restricted to a certain context, as can global constants, variables, and functions.
可以明確的給類、結構體表谊、枚舉钞护、設置訪問級別,也可以給屬性爆办、函數难咕、初始化方法、基本類型、下標索引等設置訪問級別余佃。協議也可以被限定在一定的范圍內使用暮刃,包括協議里的全局常量、變量和函數爆土。

名詞解釋:模塊和源文件

Modules and Source Files
Swift’s access control model is based on the concept of modules and source files.
A module is a single unit of code distribution—a framework or application that is built and shipped as a single unit and that can be imported by another module with Swift’simport
keyword.
Each build target (such as an app bundle or framework) in Xcode is treated as a separate module in Swift. If you group together aspects of your app’s code as a stand-alone framework—perhaps to encapsulate and reuse that code across multiple applications—then everything you define within that framework will be part of a separate module when it is imported and used within an app, or when it is used within another framework.
A source file is a single Swift source code file within a module (in effect, a single file within an app or framework). Although it is common to define individual types in separate source files, a single source file can contain definitions for multiple types, functions, and so on.
Swift中的訪問控制模型基于模塊和源文件這兩個概念椭懊。
模塊指的是Framework或App bundle。在Swift中步势,可以用import關鍵字引入自己的工程氧猬。
在Swift中,Frameword或App bundle被作為模塊處理坏瘩。如果你是為了實現某個通用的功能狂窑,或者是為了封裝一些常用方法而將代碼打包成Framework,這個Framework在Swift中就被稱為模塊桑腮。不論它被引入到某個App工程或者其他的Framework泉哈,它里面的一切(屬性、函數等)都屬于這個模塊破讨。
源文件指的是Swift中的Swift File丛晦,就是編寫Swift代碼的文件,它通常屬于一個模塊提陶。通常一個源文件包含一個類烫沙,在類中又包含函數、屬性等類型隙笆。

訪問級別
<font color=red>內容</font>
Access Levels
Swift provides three different access levels for entities within your code. These access levels are relative to the source file in which an entity is defined, and also relative to the module that source file belongs to.
Public access enables entities to be used within any source file from their defining module, and also in a source file from another module that imports the defining module. You typically use public access when specifying the public interface to a framework.
Internal access enables entities to be used within any source file from their defining module, but not in any source file outside of that module. You typically use internal access when defining an app’s or a framework’s internal structure.
Private access restricts the use of an entity to its own defining source file. Use private access to hide the implementation details of a specific piece of functionality.
Swift提供了三種不同的訪問級別锌蓄。這些訪問級別相對于源文件中定義的實體,同時也相對于這些源文件所屬的模塊撑柔。
Public:可以訪問自己模塊或應用中源文件里的任何實體瘸爽,別人也可以訪問引入該模塊中源文件里的所有實體。通常情況下铅忿,某個接口或Framework是可以被任何人使用時剪决,你可以將其設置為public級別。
Internal:可以訪問自己模塊或應用中源文件里的任何實體檀训,但是別人不能訪問該模塊中源文件里的實體柑潦。通常情況下,某個接口或Framework作為內部結構使用時峻凫,你可以將其設置為internal級別渗鬼。
Private:只能在當前源文件中使用的實體,稱為私有實體荧琼。使用private級別譬胎,可以用作隱藏某些功能的實現細節(jié)肛循。
Public為最高級訪問級別,Private為最低級訪問級別银择。

  1. Swift語言的改變
    “確保轉換”和“可失敗轉換”的概念現在被分為兩個操作符±巯希可失敗轉換現在使用as!運算符浩考,這個!感嘆號可以讓代碼的讀者更清晰的明白本次轉換可能失敗并觸發(fā)一個運行時錯誤被盈∥瞿酰“as”操作符會保持向上轉換(比如“someDerivedValue轉換為Base”)或者類型標注(“0 轉換為Int8”),它保證了轉換不會失敗只怎。
    結構體和類構造器中的let不可變屬性現在被規(guī)范為更加標準的通用模型:lets類型初始化后將永不會被改變或重新賦值袜瞬。以前的實現是,可以在構造器中任意修改身堡,而現在它們只允許被初始化和提供值操作邓尤。如果一個屬性在聲明時已經賦值,那么它會被所有的構造器認為已經含有初始值贴谎。
    從橋接Objective-C類 (NSString/NSArray/NSDictionary)到它Swift中值類型的隱式轉化被移除汞扎。這將是Swift的類型系統更加簡單和可預測。這意味著:
import Foundation  
func log(s: String) { println(x) }  
let ns: NSString = 
"some NSString"
 // Okay  
log(ns) 
// 錯誤  
// "'NSString' 不能轉換為 'String'"
為了完成橋接轉換擅这,需要用顯式轉化符標注:
log(ns as String) 
// succeeds
從Swift類型到Objective-C類型的橋接隱式轉換依然被允許澈魄,比如:
func nsLog(ns: NSString) { println(ns) }  
let s: String = “some String”  
nsLog(s) 
// okay: implicit conversion from String to NSString is still permitted

6.自定義Tabber

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市仲翎,隨后出現的幾起案子痹扇,更是在濱河造成了極大的恐慌,老刑警劉巖溯香,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鲫构,死亡現場離奇詭異,居然都是意外死亡玫坛,警方通過查閱死者的電腦和手機芬迄,發(fā)現死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昂秃,“玉大人禀梳,你說我怎么就攤上這事〕β妫” “怎么了算途?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蚀腿。 經常有香客問我嘴瓤,道長扫外,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任廓脆,我火速辦了婚禮筛谚,結果婚禮上,老公的妹妹穿的比我還像新娘停忿。我一直安慰自己驾讲,他們只是感情好,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布席赂。 她就那樣靜靜地躺著吮铭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颅停。 梳的紋絲不亂的頭發(fā)上谓晌,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天,我揣著相機與錄音癞揉,去河邊找鬼纸肉。 笑死,一個胖子當著我的面吹牛喊熟,可吹牛的內容都是我干的毁靶。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼逊移,長吁一口氣:“原來是場噩夢啊……” “哼预吆!你這毒婦竟也來了?” 一聲冷哼從身側響起胳泉,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤拐叉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后扇商,有當地人在樹林里發(fā)現了一具尸體凤瘦,經...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年案铺,在試婚紗的時候發(fā)現自己被綠了蔬芥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡控汉,死狀恐怖笔诵,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情姑子,我是刑警寧澤乎婿,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站街佑,受9級特大地震影響谢翎,放射性物質發(fā)生泄漏捍靠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一森逮、第九天 我趴在偏房一處隱蔽的房頂上張望榨婆。 院中可真熱鬧,春花似錦褒侧、人聲如沸良风。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鳞上,卻和暖如春这吻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背篙议。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工唾糯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鬼贱。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓移怯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親这难。 傳聞我的和親對象是個殘疾皇子舟误,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內容

  • Chapters: Enumerations - Advanced Operators Excerpt From:...
    碧波浮沉閱讀 665評論 0 1
  • 一顆想去看世界的心從八月一直等到十一月,說走就走的沖勁不是時時都有姻乓。很慶幸選擇了杭州嵌溢,遇見一座城,從一個故事開始蹋岩。...
    望涼月閱讀 289評論 2 3
  • 一如既往赖草,秋高氣爽 世界干凈的如同天堂 就連,卑微的生活都帶著使命 和歸宿 金黃金黃 瓦藍瓦藍 是不是要做點兒什么...
    西詩人生閱讀 320評論 0 2
  • 圣誕夜,念恩師扣囊。晚上加班加點終于趕完了新接手競價賬戶的完善工作乎折,盡管已經是第N次搭賬戶了,可每一次的感受都不盡相同...
    墨墨漲知識閱讀 541評論 0 50
  • WebSocket(實現持久連接) http://www.runoob.com/html/html5-websoc...
    WMLJS閱讀 2,709評論 0 0