OC中, block(塊)的本質是什麼?

時間 2021-05-08 16:17:26

1樓:

1、block就是函式指標啊,能將函式作為變數、引數來傳遞

2、一百個單例?!?!一百個了還叫單例?!?!

單例要做記憶體管理有看你是用的什麼形式,如果是懶載入+單例,你可以在didRecieveMemoryWarning的時候釋放掉單例物件,如果是dispatch_once_t宣告的那你可能能要先手動重置once再釋放,當然如果是全域性單例不建議釋放

2樓:朝花夕拾

block也可以理解為類似於乙個物件,因為他使用時使用可以像使用物件一樣使用它,另外的話,我自認為block也可以理解為C語言中的內聯函式,函式中的函式~

3樓:

1.你答的沒問題但是太像背的了,面試時候盡量把你知道的、準確的、關鍵的都講出來,不準確的思量著講,完全不展開是不好的。至於面試官沒說什麼,這,實在沒什麼奇怪的,沒遇到過每個問題都給反饋的面試官。

2.說@autoreleasepool就錯了,管不了單例。我沒想到什麼好辦法,如果是我我會為什麼要生成這麼多單例,除了ConfigCenter、FileManager、DAO之類的還有什麼?

是不是程式設計有問題?如果面試官堅持,說就有100個那就說不知道好了- -!你可以看看http:

//programmers.stackexchange.com

/questions/40373/so-singletons-are-bad-then-what

看一下single instance和singleton的區別,從要不要作為單例的角度回答。

4樓:馬鈴薯

llvm.org/svn/llvm-proje

block定義

struct

Block_descriptor

;struct

Block_layout

;實際上block就是這倆玩意了

我們來舉個栗子看看

定義乙個最簡單block 列印hello world

使用clang指令clang -rewrite-objc main.m

得到乙個cpp檔案

開啟之,你就會看到什麼是block了

你定義完block之後,其實是建立了乙個函式,在建立結構體的時候把函式的指標一起傳給了block,所以之後可以拿出來呼叫。

再看看值捕獲的問題

定義block的時候,變數a的值就傳遞到了block結構體中,僅僅是值傳遞,所以在block中修改a是不會影響到外面的a變數的。

而加了__block字首

並不是直接傳遞a的值了,而是把a的位址傳過去了,所以在block內部便可以修改到外面的變數了。

根據isa指標,block一共有3種型別的block

_NSConcreteGlobalBlock 全域性靜態

_NSConcreteStackBlock 儲存在棧中,出函式作用域就銷毀

_NSConcreteMallocBlock 儲存在堆中,retainCount == 0銷毀

而ARC和MRC中,還略有不同

......

就這樣吧...

物理學中, 磁 的本質是什麼?

高原獵鷹 磁是帶電粒子定向運動時的對外作用現象,顯然磁力就是定向運動的帶電粒子產生的對外作用力,本質就是電力,是電力的一種特殊表現形式。電力一般是指靜電力和交流電力。 Monolink 大部分回答都在瞎扯。通俗的講,我們身邊的材料是由原子構成的,原子分為核和電子,電子有自旋,有能級。這裡不展開了,否...

婚姻的本質是什麼,愛情的本質又是什麼?

王瀟宵 愛情可以是兩個人在一起的感覺,婚姻也可以只是大多數人傳宗接代的一道手續。但是,那是別人的定義,我們可以創造自己的定義。在我看來,婚姻本質上是一種契約,是一種可以與時俱進,不斷改變的契約。愛情,可以是兩個人在一起快樂的基礎上,可以一起成長歷練。 Vincent Tang 個人見解,法律婚姻事實...

生命的本質和意識的本質是什麼?

Entropie 從我對物理學熱力學第二定律的理解,生命可以通過消耗外界的低熵,排出高熵,來延緩自身的熵增。比如進食排洩,剝削揮霍。與此同時,一些生命還可以有意識地增加外界的熵,成為熵增主體。比如愚公移山,著書立說。而無生命物質只能是熵增的客體,低熵被消耗或虛耗。意識形成的微觀機制至今是乙個迷。但是...