10.swift5-常見(jiàn)語(yǔ)法及內(nèi)存管理

常見(jiàn)語(yǔ)法

參數(shù)

Swift中帶參數(shù)的函數(shù)的一般寫(xiě)法是這樣的:

func someFunction(firstParameterName: Int, secondParameterName: Int) {

//在函數(shù)體內(nèi),firstParameterName 和 secondParameterName 代表參數(shù)中的第一個(gè)和第二個(gè)參數(shù)值

}

調(diào)用該函數(shù)時(shí),寫(xiě)法是:

someFunction(firstParameterName: 1, secondParameterName: 2)

但有時(shí)我們一些函數(shù)的參數(shù)前有一個(gè)“_”喧务,類(lèi)似這樣:

func someFunction(_ firstParameterName: Int, secondParameterName: Int) {

//在函數(shù)體內(nèi)哲思,firstParameterName 和 secondParameterName 代表參數(shù)中的第一個(gè)和第二個(gè)參數(shù)值

}

那么這個(gè)“_”是什么意思呢笔刹,看看函數(shù)的調(diào)用就知道了:

someFunction(1, secondParameterName: 2)

“_”是代表函數(shù)調(diào)用時(shí),可以忽略參數(shù)名稱(chēng)。

常見(jiàn)語(yǔ)法

nil是代表可選的缺省值

定義結(jié)構(gòu)體:strct Card {}

結(jié)構(gòu)體是值引用,每次都是拷貝一個(gè),但是是寫(xiě)時(shí)復(fù)制,也就是用的時(shí)候復(fù)制

類(lèi)是引用類(lèi)型,就是其他語(yǔ)言中傳遞的是指針,直接指向堆棧中的對(duì)象

實(shí)例變量初始化空數(shù)組:var card = Array()或者var cards = [Card](), ()就是調(diào)用構(gòu)造器,初始化的意思

0-100遍歷: for i in 0...100 {}

數(shù)組遍歷:for (index, title) in titles.enumerated()?{}

數(shù)組新增元素除了append還可以用+=, card += [card,card]

變量聲明:

var variableName = 42

var varB:Float

varB = 4.13

private lazy var scrollView: UIScrollView = {}

變量前加?表示如果沒(méi)有初值就是nil,加!表示明確這個(gè)變量一定有值,如果為空就會(huì)crash

extension,擴(kuò)展可以新增功能,但不能覆蓋現(xiàn)有的功能

與if語(yǔ)句相同的是配猫,guard也是基于一個(gè)表達(dá)式的布爾值去判斷一段代碼是否該被執(zhí)行毛俏。與if語(yǔ)句不同的是炭庙,guard只有在條件不滿(mǎn)足的時(shí)候才會(huì)執(zhí)行這段代碼。你可以把guard近似的看做是Assert煌寇,但是你可以?xún)?yōu)雅的退出而非崩潰焕蹄。

let表示不可變對(duì)象,也就是說(shuō)內(nèi)存地址不能改變,但也可以修飾可變對(duì)象

var表示可變對(duì)象

在閉包里面為了解決循環(huán)引用問(wèn)題,使用了`[unowned self]`阀溶。如果回調(diào)在self已經(jīng)被釋放后再調(diào)用腻脏,會(huì)導(dǎo)致crash掉。

解決:使用weak修飾银锻。

weak與unowned的區(qū)別:

unowned設(shè)置以后即使它原來(lái)引用的內(nèi)容已經(jīng)被釋放了迹卢,它仍然會(huì)保持對(duì)被已經(jīng)釋放了的對(duì)象的一個(gè) "無(wú)效的" 引用,它不能是 Optional 值徒仓,也不會(huì)被指向?nil?。如果你嘗試調(diào)用這個(gè)引用的方法或者訪問(wèn)成員屬性的話(huà)誊垢,程序就會(huì)崩潰掉弛。而?weak?則友好一些,在引用的內(nèi)容被釋放后喂走,標(biāo)記為?weak?的成員將會(huì)自動(dòng)地變成?nil?(因此被標(biāo)記為 @?weak?的變量一定需要是 Optional 值)殃饿。

元組:let x: (String, Int, Double) = (“hello”,5,0.8),

let (word, number,value) = x

print(word) print(number) print(value)

let x:(w:string, i:int,v:Double) = (“hello”,5,0.8),

print(x.w), print(x.i) print(x.v)

fileprivate文件內(nèi)可以互相訪問(wèn)

字典: var pantry:[String: Int] = [:]

?????panty[“apple”] = 2

?????panty = [“apple”:5,”pears”:3, “oranges”:4]

?????for (food, quantity) in panty { ???}

類(lèi)型

swift的Optional類(lèi)型其實(shí)是枚舉類(lèi)型,

enum Optional<T>{

case none

case some(<T>)

}

Optional通常有兩種類(lèi)型,一種是none,一種是關(guān)聯(lián)某個(gè)類(lèi)型(some<T>),使用?來(lái)訪問(wèn)可選類(lèi)型,??是指為空的話(huà)就創(chuàng)建個(gè)默認(rèn)值

var hello:String? ==> var hello: Optional<String> = .none

ex:

?let hello: String? = ...

print(hello!)相當(dāng)于強(qiáng)制解包,也就是

switch hello {

case .none: //raise an exception(crash)

case .some(let data): print(data)

}

var hello: String!

print(hello)同上面的switch是一個(gè)意思

var hello:String?=”hello” ==> var hello: Optional<String> = .some(“hello”)

var hello:String?=nil ?==> var hello: Optional<String> = .none

enum : enum food {

case fires

case dink(size: FryOrderSize)

case cookie(String, ounces:Int)

}

枚舉是個(gè)值類(lèi)型,和結(jié)構(gòu)體一樣


靜態(tài)函數(shù)調(diào)用

swift要調(diào)用不同文件中的func,需要將文件放在同一目錄,如果要將常量區(qū)分來(lái)看來(lái),可以對(duì)常量類(lèi)右鍵選擇 New Group from Selection

內(nèi)存管理

swift的內(nèi)存管理是計(jì)算管理(automatic reference counting,ARC),有人引用計(jì)數(shù)+1,離開(kāi)引用區(qū),計(jì)數(shù)-1,變?yōu)?后就立刻移除,ARC有三種類(lèi)型

strong,就是指該對(duì)象一直在堆的內(nèi)存中,是默認(rèn)類(lèi)型

weak,弱引用對(duì)象的引用計(jì)數(shù)不會(huì)+1,必須為可選變量

[if !supportLists]3.[endif]unowned,這是一個(gè)危險(xiǎn)類(lèi)型,無(wú)主引用,不把它算到引用計(jì)數(shù)里,非常少被使用芋肠,例如我使用了堆里的某個(gè)對(duì)象,但是不要把它算作強(qiáng)引用,我保證我從來(lái)不會(huì)在這個(gè)對(duì)象釋放后再去使用乎芳。我們很難說(shuō)我比機(jī)器更明白此時(shí)對(duì)象是否在堆中,唯一使用的情況是用來(lái)避免引用循環(huán)。引用循環(huán)是說(shuō)堆中有個(gè)對(duì)象引用了另一個(gè)對(duì)象,另一個(gè)對(duì)象又引用了該對(duì)象帖池,這樣就把對(duì)方留在了堆中奈惑。swift通常只有在閉包時(shí)會(huì)出現(xiàn)循環(huán)引用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市睡汹,隨后出現(xiàn)的幾起案子肴甸,更是在濱河造成了極大的恐慌,老刑警劉巖囚巴,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件原在,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡彤叉,警方通過(guò)查閱死者的電腦和手機(jī)庶柿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)秽浇,“玉大人浮庐,你說(shuō)我怎么就攤上這事〖婧牵” “怎么了兔辅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵腊敲,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我维苔,道長(zhǎng)碰辅,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任介时,我火速辦了婚禮没宾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沸柔。我一直安慰自己循衰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開(kāi)白布褐澎。 她就那樣靜靜地躺著会钝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪工三。 梳的紋絲不亂的頭發(fā)上迁酸,一...
    開(kāi)封第一講書(shū)人閱讀 51,287評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音俭正,去河邊找鬼奸鬓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛掸读,可吹牛的內(nèi)容都是我干的串远。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼儿惫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼澡罚!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起姥闪,我...
    開(kāi)封第一講書(shū)人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤始苇,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后筐喳,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體催式,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年避归,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了荣月。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡梳毙,死狀恐怖哺窄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤萌业,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布坷襟,位于F島的核電站,受9級(jí)特大地震影響生年,放射性物質(zhì)發(fā)生泄漏婴程。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一抱婉、第九天 我趴在偏房一處隱蔽的房頂上張望档叔。 院中可真熱鬧,春花似錦蒸绩、人聲如沸衙四。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)传蹈。三九已至,卻和暖如春步藕,著一層夾襖步出監(jiān)牢的瞬間卡睦,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工漱抓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恕齐。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓乞娄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親显歧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子仪或,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容