您好,登錄后才能下訂單哦!
上面是兩個函數指針,最終給予賦值;
calculate等于的東西,必須要跟類型匹配上;
下面的test即可執行了這個函數;結果也驗證了;
好吧,這么理解:
如果^在括號里面,那么與^同在括號內的英文字符,代表這是一個”函數指針”的概念,類似快速引用; 例如: char (^square) (int); 前面是返回值類型char,后面是參數int類型;
如果^在括號外,那么就是一個具體的block的實現函數的抬頭符.之后的內容,無非是參數,大括號,實現內容;可參考square = ^(int a ) {return a*a ;};
square(5)即是25;
總之,block基本就是這樣;省去了你定義一個不必要的函數,然后再調用,煩死了;還要考慮備份現場;因為block是實時運算,運算的數據全部重新拷貝一份;你可以理解為new了一個程序在沙盒里計算,怎么著都不會影響;當然了,更復雜的有__block;唉.復雜的結果,就是代碼可讀性差;
注意,block是一個稱呼;不是關鍵字; ^才是關鍵符號;
我個人覺得,在代碼里用block單詞作為block的”函數指針”的,都TMD腦子有病;這不故意混淆視聽么?比如,你一個用來解析json的block,你丫干脆用JsonBlock,何必故意弄個這么繞口的?
那么block適合干啥?
我現在思維禁錮,因為之前沒有^,我們也活得好好的,現在唯一想出來的好處,就是偷懶,隨取隨用,這要這個函數沒有復用的必要,那就放心大膽的用吧.省了頭文件定義,冗余的格式.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。