動(dòng)態(tài)規(guī)劃定義[https://en.wikipedia.org/wiki/Dynamic_programming] 初識(shí)動(dòng)態(tài)規(guī)劃:如何巧妙解決“雙十一”購(gòu)物時(shí)的湊單問題咙咽?[h...
動(dòng)態(tài)規(guī)劃定義[https://en.wikipedia.org/wiki/Dynamic_programming] 初識(shí)動(dòng)態(tài)規(guī)劃:如何巧妙解決“雙十一”購(gòu)物時(shí)的湊單問題咙咽?[h...
分治算法:談一談大規(guī)模計(jì)算框架 MapReduce 中的分治思想[http://time.geekbang.org/column/article/73503] 回溯算法:從電...
散列表(上):Word 文檔中的單詞拼寫檢查功能是如何實(shí)現(xiàn)的?[http://time.geekbang.org/column/article/64233] 散列表(中):如...
數(shù)組:為什么很多編程語(yǔ)言中數(shù)組都從 0 開始編號(hào)须眷?[http://time.geekbang.org/column/article/40961] 鏈表:如何實(shí)現(xiàn) LRU 緩存...
@Double丶K 調(diào)用func0時(shí)竖瘾,傳進(jìn)去的是b2,就是說cself就是b2。Block結(jié)構(gòu)體捕獲了test的瞬時(shí)值就是那個(gè)字符串花颗,然后作為參數(shù)捕传,用來(lái)初始化Block,接著用初始化好的結(jié)構(gòu)體給b2變量賦值(指針賦值 b2指向初始化好的Block)。b2結(jié)構(gòu)體中的成員變量test是新建的扩劝,所以他的地址跟外面的test地址一定不同庸论,而指向的對(duì)象卻是同一個(gè)职辅,對(duì)象是誰(shuí)呢字符串"test1111"。你的截圖和你的解釋都有問題聂示,分析這個(gè)問題,關(guān)鍵要看C++中的int main()方法而不是fun0罐农,這是其一。其二是你的解釋催什,Block并沒有拷貝任何東西。Block拷貝東西是要調(diào)用_block_copy->XXassign的宰睡。這里只是單純的值截獲蒲凶。解釋產(chǎn)生新指針要在Block的結(jié)構(gòu)體_block_impl_0中去看,因?yàn)樾绿砹艘粋€(gè)成員變量 NSString *test;
iOS block 面試題(看這篇就夠了)此類的例子很多博客都有,只是解釋的都很模糊,看了也還是不明白 第一題: test會(huì)打印什么?因?yàn)樯? 答案是test1111 原因: /*2019-03-07 15:36:0...
前情提要: 引用計(jì)數(shù)內(nèi)存管理: 自己生成對(duì)象自己持有; 非自己生成的對(duì)象拆内,自己也能持有; 不再需要自己持有的對(duì)象時(shí)釋放; 非自己持有的對(duì)象無(wú)法釋放旋圆。 生成并持有對(duì)象: all...
前情提要 GCD極大地簡(jiǎn)化了平時(shí)開發(fā)中處理多線程問題的難度,但有時(shí)會(huì)遇上死鎖麸恍,導(dǎo)致各種各樣的問題灵巧,本文用簡(jiǎn)短的,通俗易懂的方式抹沪,與大家一起討論如何分析死鎖刻肄,了解了形成死鎖的根...
第一題你的解釋不對(duì)。之所以指針地址變了跟NSString *test = __cself->test; // bound by copy是沒有關(guān)系的融欧,這條語(yǔ)句敏弃,只是從cself的結(jié)構(gòu)體里拿到了他的成員變量test。關(guān)鍵在于這個(gè)test是block初始化結(jié)構(gòu)體中的一個(gè)成員變量噪馏,相當(dāng)于初始化結(jié)構(gòu)體的時(shí)候麦到,向內(nèi)存新申請(qǐng)了一個(gè)NSString類型的指針,只不過現(xiàn)在沒有指向任何值欠肾。在block的初始化結(jié)構(gòu)體初始化的時(shí)候瓶颠,會(huì)有一個(gè)賦值的過程,直接將字符串test111111賦值給該結(jié)構(gòu)體的成員變量test,也就是cself->test刺桃。
rewrite下,字符串test被我改成了testasdasd方便看:
NSString *testasdasd = (NSString *)&__NSConstantStringImpl__var_folders_xh_7qhjzbrx7zz361c_rtp2lh0w0000gn_T_ViewController_00e2ba_mi_0;
TestBlock b2 = ((void (*)())&__ViewController__viewDidLoad_block_impl_0((void *)__ViewController__viewDidLoad_block_func_0, &__ViewController__viewDidLoad_block_desc_0_DATA, testasdasd, 570425344));
它要初始化結(jié)構(gòu)體__ViewController__viewDidLoad_block_impl_0粹淋,直接把testasdasd賦值給他的成員變量-cself->testasdasd。所以對(duì)象的內(nèi)存地址沒有變瑟慈,但是在Block內(nèi)部廓啊,指向?qū)ο蟮闹羔樧兞耍驗(yàn)檫@個(gè)指針是結(jié)構(gòu)體新創(chuàng)建的封豪。
iOS block 面試題(看這篇就夠了)此類的例子很多博客都有,只是解釋的都很模糊,看了也還是不明白 第一題: test會(huì)打印什么?因?yàn)樯? 答案是test1111 原因: /*2019-03-07 15:36:0...
前情提要 基于Block原理分析(1)[http://www.reibang.com/p/afd031effac0],繼續(xù)分析Block中的剩余知識(shí)點(diǎn)谴轮。 1.__block...
前情提要 1.閉包、Block是一個(gè)帶有自動(dòng)變量值(可以截獲自動(dòng)變量值)的匿名函數(shù)吹埠。截獲的含義是保存該自動(dòng)變量的瞬間值第步。2.OC中如果要改變Block截獲的外部自動(dòng)變量的值疮装,...
前情提要 在文章正在審核中... - 簡(jiǎn)書[http://www.reibang.com/p/96a4e264ce55]文章的基礎(chǔ)之上,討論Apple又給出的兩個(gè)簡(jiǎn)單的例子...
前情提要 iOS13對(duì)CollectionView進(jìn)行了大的更新之后涝婉,一個(gè)CollectionView幾乎可以應(yīng)對(duì)開發(fā)中90%的UI需求。 開發(fā)過程中蔗怠,我們不再需要思考"怎么...