亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 編程 > Swift > 正文

Swift教程之類(lèi)的析構(gòu)詳解

2020-03-09 17:50:57
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了Swift教程之類(lèi)的析構(gòu)詳解,在一個(gè)類(lèi)的實(shí)例被釋放之前,析構(gòu)函數(shù)會(huì)被調(diào)用,本文即講解了析構(gòu)過(guò)程原理、析構(gòu)器操作等內(nèi)容,需要的朋友可以參考下
 

在一個(gè)類(lèi)的實(shí)例被釋放之前,析構(gòu)函數(shù)會(huì)被調(diào)用。用關(guān)鍵字deinit來(lái)定義析構(gòu)函數(shù),類(lèi)似于初始化函數(shù)用init來(lái)定義。析構(gòu)函數(shù)只適用于class類(lèi)型。

1、析構(gòu)過(guò)程原理

Swift 會(huì)自動(dòng)釋放不再需要的實(shí)例以釋放資源。如自動(dòng)引用計(jì)數(shù)那一章描述,Swift 通過(guò)自動(dòng)引用計(jì)數(shù)(ARC)處理實(shí)例的內(nèi)存管理。通常當(dāng)你的實(shí)例被釋放時(shí)不需要手動(dòng)地去清理。但是,當(dāng)使用自己的資源時(shí),你可能需要進(jìn)行一些額外的清理。例如,如果創(chuàng)建了一個(gè)自定義的類(lèi)來(lái)打開(kāi)一個(gè)文件,并寫(xiě)入一些數(shù)據(jù),你可能需要在類(lèi)實(shí)例被釋放之前關(guān)閉該文件。

在類(lèi)的定義中,每個(gè)類(lèi)最多只能有一個(gè)析構(gòu)函數(shù)。析構(gòu)函數(shù)不帶任何參數(shù),在寫(xiě)法上不帶括號(hào):

復(fù)制代碼代碼如下:

deinit {
// 執(zhí)行析構(gòu)過(guò)程
}

析構(gòu)函數(shù)是在實(shí)例釋放發(fā)生前一步被自動(dòng)調(diào)用。不允許主動(dòng)調(diào)用自己的析構(gòu)函數(shù)。子類(lèi)繼承了父類(lèi)的析構(gòu)函數(shù),并且在子類(lèi)析構(gòu)函數(shù)實(shí)現(xiàn)的最后,父類(lèi)的析構(gòu)函數(shù)被自動(dòng)調(diào)用。即使子類(lèi)沒(méi)有提供自己的析構(gòu)函數(shù),父類(lèi)的析構(gòu)函數(shù)也總是被調(diào)用。

 

因?yàn)橹钡綄?shí)例的析構(gòu)函數(shù)被調(diào)用時(shí),實(shí)例才會(huì)被釋放,所以析構(gòu)函數(shù)可以訪問(wèn)所有請(qǐng)求實(shí)例的屬性,并且根據(jù)那些屬性可以修改它的行為(比如查找一個(gè)需要被關(guān)閉的文件的名稱)。

2、析構(gòu)器操作

這里是一個(gè)析構(gòu)函數(shù)操作的例子。這個(gè)例子是一個(gè)簡(jiǎn)單的游戲,定義了兩種新類(lèi)型,Bank和Player。Bank結(jié)構(gòu)體管理一個(gè)虛擬貨幣的流通,在這個(gè)流通中Bank永遠(yuǎn)不可能擁有超過(guò) 10,000 的硬幣。在這個(gè)游戲中有且只能有一個(gè)Bank存在,因此Bank由帶有靜態(tài)屬性和靜態(tài)方法的結(jié)構(gòu)體實(shí)現(xiàn),從而存儲(chǔ)和管理其當(dāng)前的狀態(tài)。

復(fù)制代碼代碼如下:

struct Bank {
static var coinsInBank = 10_000
static func vendCoins(var numberOfCoinsToVend: Int) -> Int {
numberOfCoinsToVend = min(numberOfCoinsToVend, coinsInBank)
coinsInBank -= numberOfCoinsToVend
return numberOfCoinsToVend
}
static func receiveCoins(coins: Int) {
coinsInBank += coins
}
}

Bank根據(jù)它的coinsInBank屬性來(lái)跟蹤當(dāng)前它擁有的硬幣數(shù)量。銀行還提供兩個(gè)方法——vendCoins和receiveCoins——用來(lái)處理硬幣的分發(fā)和收集。

 

vendCoins方法在 bank 分發(fā)硬幣之前檢查是否有足夠的硬幣。如果沒(méi)有足夠多的硬幣,Bank返回一個(gè)比請(qǐng)求時(shí)小的數(shù)字(如果沒(méi)有硬幣留在 bank 中就返回 0)。vendCoins方法聲明numberOfCoinsToVend為一個(gè)變量參數(shù),這樣就可以在方法體的內(nèi)部修改數(shù)字,而不需要定義一個(gè)新的變量。vendCoins方法返回一個(gè)整型值,表明了提供的硬幣的實(shí)際數(shù)目。

receiveCoins方法只是將 bank 的硬幣存儲(chǔ)和接收到的硬幣數(shù)目相加,再保存回 bank。

Player類(lèi)描述了游戲中的一個(gè)玩家。每一個(gè) player 在任何時(shí)刻都有一定數(shù)量的硬幣存儲(chǔ)在他們的錢(qián)包中。這通過(guò) player 的coinsInPurse屬性來(lái)體現(xiàn):

復(fù)制代碼代碼如下:

class Player {
var coinsInPurse: Int
init(coins: Int) {
coinsInPurse = Bank.vendCoins(coins)
}
func winCoins(coins: Int) {
coinsInPurse += Bank.vendCoins(coins)
}
deinit {
Bank.receiveCoins(coinsInPurse)
}
}

每個(gè)Player實(shí)例都由一個(gè)指定數(shù)目硬幣組成的啟動(dòng)額度初始化,這些硬幣在 bank 初始化的過(guò)程中得到。如果沒(méi)有足夠的硬幣可用,Player實(shí)例可能收到比指定數(shù)目少的硬幣。

 

Player類(lèi)定義了一個(gè)winCoins方法,該方法從銀行獲取一定數(shù)量的硬幣,并把它們添加到玩家的錢(qián)包。Player類(lèi)還實(shí)現(xiàn)了一個(gè)析構(gòu)函數(shù),這個(gè)析構(gòu)函數(shù)在Player實(shí)例釋放前一步被調(diào)用。這里析構(gòu)函數(shù)只是將玩家的所有硬幣都返回給銀行:

復(fù)制代碼代碼如下:

var playerOne: Player? = Player(coins: 100)
println(“A new player has joined the game with (playerOne!.coinsInPurse) coins”)
// 輸出 “A new player has joined the game with 100     coins”
println(“There are now (Bank.coinsInBank) coins left     in the bank”)
// 輸出 “There are now 9900 coins left in the bank”

一個(gè)新的Player實(shí)例隨著一個(gè) 100 個(gè)硬幣(如果有)的請(qǐng)求而被創(chuàng)建。這個(gè)Player實(shí)例存儲(chǔ)在一個(gè)名為playerOne的可選Player變量中。這里使用一個(gè)可選變量,是因?yàn)橥婕铱梢噪S時(shí)離開(kāi)游戲。設(shè)置為可選使得你可以跟蹤當(dāng)前是否有玩家在游戲中。

 

因?yàn)閜layerOne是可選的,所以由一個(gè)感嘆號(hào)(!)來(lái)修飾,每當(dāng)其winCoins方法被調(diào)用時(shí),coinsInPurse屬性被訪問(wèn)并打印出它的默認(rèn)硬幣數(shù)目。

復(fù)制代碼代碼如下:

playerOne!.winCoins(2_000)
println(“PlayerOne won 2000 coins & now has /    (playerOne!.coinsInPurse) coins”)
// 輸出 “PlayerOne won 2000 coins & now has 2100 coins”
println(“The bank now only has (Bank.coinsInBank) coins left”)
// 輸出 “The bank now only has 7900 coins left”

 

這里,player 已經(jīng)贏得了 2,000 硬幣。player 的錢(qián)包現(xiàn)在有 2,100 硬幣,bank 只剩余 7,900 硬幣。

復(fù)制代碼代碼如下:

playerOne = nil
println(“PlayerOne has left the game”)
// 輸出 “PlayerOne has left the game”
println(“The bank now has (Bank.coinsInBank) coins”)
// 輸出 “The bank now has 10000 coins”

玩家現(xiàn)在已經(jīng)離開(kāi)了游戲。這表明是要將可選的playerOne變量設(shè)置為nil,意思是“沒(méi)有Player實(shí)例”。當(dāng)這種情況發(fā)生的時(shí)候,playerOne變量對(duì)Player實(shí)例的引用被破壞了。沒(méi)有其它屬性或者變量引用Player實(shí)例,因此為了清空它占用的內(nèi)存從而釋放它。在這發(fā)生前一步,其析構(gòu)函數(shù)被自動(dòng)調(diào)用,其硬幣被返回到銀行。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到swift教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
综合五月激情网| 国产精品白丝jk喷水视频一区| 丝袜美腿亚洲一区| 九九久久久久久久久激情| av中文字幕网址| 黄色一级视频网站| 亚洲黄色小视频在线观看| 拔插拔插华人永久免费| 欧美理论片在线| a级大片免费看| t66y最新发布地址| 97人妻精品一区二区免费| 日韩影院在线观看| 97se国产在线视频| 天天插天天干天天操| 成人av资源网| 欧美极度另类| 国产不卡一区二区在线播放| 国产美女被下药99| 天堂а√在线官网| 欧美激情va永久在线播放| 成人免费在线播放视频| 先锋资源中文字幕| 7m精品福利视频导航| 91亚洲永久免费精品| 国产伦精品一区二区三区免费视频| 亚洲国产成人二区| 青春草国产成人精品久久| 羞羞视频网站| 欧美日韩亚洲在线观看| 欧美日韩成人在线一区| 亚洲麻豆一区二区三区| 成人av网站在线观看| av在线三区| 国产精品国产三级国产aⅴ中文| 欧美一区一区| 亚洲少妇18p| 黄色成人在线| 日韩不卡一区二区| 欧美极品欧美精品欧美| 免费在线观看黄色| 天天影视涩香欲综合网| 北岛玲日韩精品一区二区三区| 中文字幕一区二区三区蜜月| 欧美日本高清| 中文字幕这里只有精品| 久久er99热精品一区二区三区| 四虎永久免费影库二三区| 国产主播第一页| 日韩aaa久久蜜桃av| 韩国午夜理伦三级不卡影院| 亚洲日本精品| 黄页在线免费观看| 国产欧美日韩精品专区| 欧美在线观看不卡| 中文字幕亚洲综合久久筱田步美| 国产伦久视频在线观看| 综合干狼人综合首页| 久久人人爽人人爽人人| 国产一区二区导航在线播放| 毛毛毛毛毛毛毛片123| 午夜精品一区二区三区在线观看| 最近中文字幕在线视频| 国产suv精品一区二区69| 欧美a免费在线| 涩涩视频网站| 一本一道久久a久久| 精品国产一区二区三区在线| 免费av网站在线播放| 成人综合一区| 午夜精品福利在线观看| 青青草原av在线| 亚洲一区高清| 日韩大片一区二区| 香蕉精品视频在线观看| 日韩av在线资源| 精品熟妇无码av免费久久| 黄色在线免费播放| 亚洲黄色天堂| 亚洲国产精品成人久久蜜臀| 国产精品99久久久久久成人| 国产在线中文字幕| 欧美午夜精品在线| 日韩a级片在线观看| 4虎在线播放1区| 国产精品jizz在线观看老狼| 国产日韩欧美一区在线| 国产又粗又长又爽| 91精品国产99久久久久久红楼| 中文字幕一区二区三区四区不卡| 天堂va在线高清一区| 污视频在线免费观看网站| 国产富婆一区二区三区| 男男h黄动漫啪啪无遮挡软件| 日韩经典在线视频| 日韩av一区二区三区在线| av在线成人| 第一福利在线视频| 欧美日韩中文在线视频| 久久婷婷激情| 亚洲综合第一页| 97一区二区三区| 欧美成人午夜| 日韩av无码一区二区三区不卡| 亚洲影院在线观看| 久草在线看片| 亚洲精一区二区三区| 国产永久免费高清在线观看视频| 亚洲色图另类色图| 久久国产在线观看| 亚洲视频电影图片偷拍一区| 超碰10000| 韩国欧美亚洲国产| 91超碰在线电影| 97视频在线免费| 国产性做久久久久久| 日韩精品一区二区三区免费观影| 国产日韩欧美一区二区三区四区| 亚洲国产欧美日韩在线观看第一区| 国产1区2区3区中文字幕| 在线中文字幕第一区| 日韩成人午夜影院| 欧美高清一级片在线| 亚洲视频图片小说| 在线电影看在线一区二区三区| 成人激情小说乱人伦| 国产精选一区二区| 美日韩一二三区| 免费中文字幕av| 网友自拍视频在线| 国产高潮在线观看| 天天做天天爱天天综合网2021| 99九九精品视频| 国产日本欧美一区二区| 亚洲免费激情| 91精品国产自产在线丝袜啪| 91免费版在线观看| www.久久色| 在线影院av| 国产毛片久久久久久| 九九精品久久久| 欧美性猛交xxxx乱大交| 日韩视频精品在线| 香蕉视频网站入口| 国产男人搡女人免费视频| h在线观看视频| 神马久久午夜| 国产精品久久久久久久天堂| 欧美日韩国产一区| 性猛交富婆╳xxx乱大交一| 国产一级大片在线观看| 欧美午夜a级限制福利片| 亚洲精品菠萝久久久久久久| 天天艹天天操| 人妻无码一区二区三区久久99| 亚洲综合成人在线| 女人被狂躁c到高潮| 自拍偷拍欧美视频| 日韩av网站在线免费观看| 丁香六月激情综合| 婷婷亚洲综合| 粉嫩喷白浆久久| 亚洲欧洲av一区二区三区久久| 99re在线播放| 国产福利一区二区精品秒拍| 欧美最猛性xxxxx(亚洲精品)| 每日更新在线观看av| 最新版sss视频在线| 粉嫩av一区二区三区粉嫩| 乱一区二区三区在线播放| 一区二区三区四区中文字幕| 成人黄视频免费| 日韩精品最新网址| 精品蜜桃传媒| 欧美男男gaytwinkfreevideos| 国产精品伦理| 国产免费一区二区三区四在线播放| 三级在线观看| 色屁屁www国产馆在线观看| 欧美性色aⅴ视频一区日韩精品| 精品国产一区二区三区av性色| 先锋影音中文字幕| 色999日韩欧美国产| 丰满人妻中伦妇伦精品app| 欧美日韩在线播放一区二区| 欧洲一区二区三区免费视频| 国产高清视频在线观看| 国产理论电影在线观看| 日韩不卡手机在线v区| 99热这里只有精品在线播放| 99久久人爽人人添人人澡| 亚洲永久一区二区三区在线| 精品毛片网大全| 成人午夜888| 中文字幕在线观看成人| 精品一区二区三区电影| а√最新版在线天堂| 欧美日本韩国一区二区三区视频| 国产国语videosex另类| 国产精品久久久久久久久久白浆| 成人免费视频91| 日韩精品亚洲精品| 丁香六月久久综合狠狠色| 精品在线亚洲视频| 先锋影音网一区| 伊人精品在线观看| 免费资源在线观看| 欧美日韩免费精品| 国产精品久久久久久久久免费樱桃| 在线亚洲精品福利网址导航| 9色在线视频| 欧美激情成人在线视频| 亚洲国产欧美在线成人app| 日韩欧美亚洲范冰冰与中字| 中文字幕亚洲专区| 人与嘼交av免费| www.99re6| 综合色天天鬼久久鬼色| 五月婷婷激情久久| 成人羞羞视频播放网站| 爽爽爽在线观看| 成人一级毛片| 在线观看日韩高清av| 黄在线观看免费网站ktv| 亚洲影院高清在线| 亚洲偷熟乱区亚洲香蕉av| 国产日韩欧美91| 高清中文字幕mv的电影| ww久久综合久中文字幕| 欧美精品卡一卡二| 宅男宅女性影片资源在线1| 免费黄色片视频| 成人永久免费| 国产福利电影在线观看| 电影在线观看一区| 国产视频久久久久| 影音先锋在线中文| 国产一区二区无遮挡| 尤物一区二区三区| 成人黄色一级视频| 4438x成人网最大色成网站| 无码aⅴ精品一区二区三区浪潮| 国产又粗又猛又爽又黄的网站| 精品少妇一区二区30p| 欧美午夜免费影院| 不卡大黄网站免费看| www.99re7| 欧美成人免费在线观看视频| 欧美黄色一区二区| 欧美精品久久久久a| 日韩欧美一区二区三区| 国产精品日韩在线观看| 你懂的在线观看一区二区| 精品三级久久| 日韩成人在线观看| 久久久一区二区三区不卡| 99精品免费| 欧美国产一区二区三区激情无套| 亚洲福利二区| 国产激情综合五月久久| 97精品人妻一区二区三区在线| 中文字幕の友人北条麻妃| 欧美三级午夜理伦三级小说| 欧美中文字幕久久| 精品亚洲欧美日韩| 亚洲jizzjizz日本少妇| xxxx69hd| 成人高清视频免费观看| 91精品国产欧美一区二区成人| 超碰中文字幕在线| 99精品国产一区二区三区不卡| 日日碰狠狠躁久久躁婷婷| 亚洲午夜在线电影| 国产美女明星三级做爰| 在线欧美不卡| 日本激情视频在线播放| av在线一区二区三区| 黄色av一级片| 欧美一卡2卡三卡4卡5免费| 91九色视频导航| 在线播放av片| 欧美最猛性xxxxx喷水| 久久bbxx| 国产偷亚洲偷欧美偷精品| 中文字幕在线视频网站| 蜜臀av亚洲一区中文字幕| www男人的天堂| 99精品视频一区二区三区| 国产专区在线播放| 亚洲黄色www网站| 91成人福利社区| av一区二区三区免费| 日韩欧美视频在线免费观看| 99re热这里只有精品视频| 国产亚洲精品综合一区91| 欧美成人精品一区二区综合免费| 日韩理论片久久| 6699嫩草久久久精品影院| 欧美一级做性受免费大片免费| 亚洲精品视频区| 国产麻豆精品入口在线观看| www.久久东京| 久久综合亚洲社区| 欧美日韩一区二区视频在线| av第一福利大全导航| 国产一级特黄a高潮片| 超碰97久久国产精品牛牛| 天堂中文av在线| 国产精品福利在线观看| 日本中文字幕在线看| 欧美性猛交xxxx免费看久久| a美女胸又www黄视频久久| 欧美午夜一区二区福利视频| 成人在线观看网址| 捆绑紧缚一区二区三区在线观看| 在线一区欧美| 888奇米影视| 全彩无遮拦全彩口工漫画全彩| 人妻av无码专区| 麻豆精品在线观看| 伊人精品综合| 91精品国产综合久久香蕉| 国产精品视频自在线| 日韩av综合网站| 91高潮大合集爽到抽搐| 日韩欧美在线不卡| 久久夜靖品2区| 全免费一级毛片免费看|