block:本質(zhì)就是一個object-c對象
block:存儲位置,可能分為3個地方:代碼去,堆區(qū)、棧區(qū)(ARC情況下會自動拷貝到堆區(qū),因此ARC下只能有兩個地方:代碼去、堆區(qū))
代碼區(qū):
不訪問棧區(qū)的變量(如局部變量),且不訪問堆區(qū)的變量(alloc創(chuàng)建的對象),此時block存放在代碼去。
堆區(qū):
訪問了處于棧區(qū)的變量,或者堆區(qū)的變量,此時block存放在堆區(qū)。–需要注意實際是放在棧區(qū),在ARC情況下會自動拷貝到堆區(qū),如果不是ARC則存放在棧區(qū),所在函數(shù)執(zhí)行完畢就會釋放,想再外面調(diào)用需要用copy指向它,這樣就拷貝到了堆區(qū),strong屬性不會拷貝、會造成野指針錯區(qū)。