1.block屬于oc對(duì)象滓侍,有三種不同的類型蒋川,分別對(duì)應(yīng)三種不同的內(nèi)存區(qū)域(堆區(qū),棧區(qū)撩笆,全局區(qū))捺球,特性:自動(dòng)捕獲變量。
2.strong夕冲,copy氮兵,weak修飾block時(shí):
2.1.沒(méi)有外部變量:block屬于全局區(qū),globalBlock
2.2.有外部變量:
2.2.1.有全局變量歹鱼,全局靜態(tài)變量泣栈,局部靜態(tài)變量:block依然在全局區(qū),globalBlock
2.2.2.局部變量(普通外部變量):copy弥姻,strong修飾的block在堆區(qū)南片,mallocBlock。weak修飾的block在棧區(qū)庭敦,stackBlock
本質(zhì):有普通外部變量的block疼进,它創(chuàng)建后在棧區(qū),只是copy秧廉,strong修飾的block伞广,會(huì)把它從棧區(qū)移到堆區(qū);而weak不會(huì)
3.把Objc代碼轉(zhuǎn)為C++代碼的命令
1.展示skds
xcodebuild -showsdks
2.轉(zhuǎn)換C++代碼命令:
xcrun -sdk iphonesimulator12.1 clang -S -rewrite-objc -fobjc-arc -fobjc-runtime=ios-12.1 文件名稱
解決循環(huán)引用的三種方法:
1.__weak
2.__block定血,block內(nèi) object=nil赔癌;
3.block參數(shù),傳入self