? ? ? Block用了很久,寫了很久澡刹,但是回頭一看又說不清呻征,道不明。每每查完資料只能在腦海里保留不了幾天罢浇。尋思著還是記下來吧陆赋,畢竟好記憶不如爛筆頭。
什么是Block嚷闭?
? ? ? ?代碼塊本質上是和其他變量類似攒岛。不同的是,代碼塊存儲的數(shù)據(jù)是一個函數(shù)體胞锰。使用代碼塊是灾锯,你可以像調用其他標準函數(shù)一樣熟尉,傳入?yún)?shù)數(shù),并得到返回值特愿。
? ? ? ?脫字符(^)是塊的語法標記廊营。按照我們熟悉的參數(shù)語法規(guī)約所定義的返回值以及塊的主體(也就是可以執(zhí)行的代碼)。下圖是如何把塊變量賦值給一個變量的語法講解:
等號左邊是代碼塊的“聲明”仙蛉,等號右邊是代碼塊的“實現(xiàn)”。
參數(shù)是NSString*的代碼塊
void (^printBlock)(NSString *x); ? ? ? ?(代碼塊的申明)
printBlock = ^(NSString* str) ?{ ? ? ? ? ? (代碼塊的實現(xiàn))
NSLog(@"print:%@", str);
};
printBlock(@"hello world!"); ? ? ? ? ? ? ? ?(代碼塊的調用)