閉包

截屏2020-06-16 下午6.41.39.png

通過代碼說明上述圖片的問題:

import Foundation
typealias Fn = (Int) -> Int
func getFn() -> Fn { //代碼段
    var num = 0 //局部變量
    print(Mems.ptr(ofVal: &num)) //堆區(qū): 0x0000000100506ca0
    func plus(_ i: Int) -> Int {
  //實(shí)例對(duì)象內(nèi)存結(jié)構(gòu)默認(rèn)為(isa指針地址,引用計(jì)數(shù)地址,其他局部變量組成)開辟的空間為16的倍數(shù)
        //捕獲外部局部變量時(shí),會(huì)生成一塊堆空間存儲(chǔ)外部變量(此時(shí)內(nèi)存結(jié)構(gòu)與實(shí)例對(duì)象內(nèi)存結(jié)構(gòu)相似), 內(nèi)部不進(jìn)行捕獲的時(shí)候它在棧空間,如果是全局變量,是不會(huì)重新生成堆空間的
        num = num + i
        print(Mems.ptr(ofVal: &num)) //堆區(qū): 0x0000000100506ca0
        return 0
    }
    return plus
}

var fn1 = getFn() //初始化閉包對(duì)象
fn1(2)
print("fn1變量的內(nèi)存地址:\(Mems.ptr(ofVal: &p))") // 全局區(qū)(靜態(tài)區(qū) 0x0000000100009470
print("fn1變量指向的內(nèi)存地址:\(Mems.ptr(ofRef: p))") // 堆 0x0000000102919e30
class B {}
class A {
    var num = 0
    func test() {
        print(Mems.ptr(ofVal: &num)) //堆 0x0000000102287ab0
        var p = B()
        print("p變量的內(nèi)存地址:\(Mems.ptr(ofVal: &p))") //棧 0x00007ffeefbff308
        print("p變量指向的內(nèi)存地址:\(Mems.ptr(ofRef: p))") //堆 0x000000010392c110
    }
}

var p = A()
p.test()
print("p變量的內(nèi)存地址:\(Mems.ptr(ofVal: &p))") //全局區(qū)(靜態(tài)區(qū)) 0x0000000100009470
print("p變量指向的內(nèi)存地址:\(Mems.ptr(ofRef: p))") //堆 0x0000000102919e30
截屏2020-06-11 下午7.06.35.png

截屏2020-06-11 下午7.11.53.png

截屏2020-06-11 下午7.17.27.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 引言 繼續(xù)學(xué)習(xí)Swift文檔,從上一章節(jié):函數(shù),我們學(xué)習(xí)了Swift函數(shù)相關(guān)的內(nèi)容,如函數(shù)的定義和使用、函數(shù)參數(shù)、...
    shiyueZ閱讀 2,002評(píng)論 0 1
  • 一切皆對(duì)象 js中的一個(gè)常見運(yùn)算符 typeof 以上代碼列出了 typeof 輸出的集中類型標(biāo)識(shí), 其中上面的四...
    無跡落花閱讀 2,091評(píng)論 0 5
  • 在 Lua 語言中,函數(shù)是嚴(yán)格遵循詞法定界的第一類值。“第一類值” 意味著 Lua 語言中的函數(shù)與其他常見類型的值...
    大寶777閱讀 470評(píng)論 0 0
  • 利用了一個(gè)下午的時(shí)間,將原型和閉包這塊的知識(shí)去了解了一下,做了些筆記和總結(jié),感興趣的童鞋可以移步王福朋的博客,寫的...
    好奇的貓貓貓閱讀 292評(píng)論 0 1
  • 介紹 Swift官方開發(fā)文檔對(duì)于閉包的介紹是這樣的:閉包是可以在代碼中被傳遞和引用的功能性獨(dú)立模塊。Swift 中...
    Latte_Bear閱讀 941評(píng)論 0 1

友情鏈接更多精彩內(nèi)容