關於oc中出現的typedef的用法/定義函式指標
阿新 • • 發佈:2019-01-28
typedef int (^calculateBlock)(int a,int b);
這裡面typedef的作用只是給 calculateBlock取了一個 別名,說明以後可以直接使用。
calculateBlock類似於*所以可以有類似的用法,以後可以直接使用calculateBlock來定義方法。例:
- (int)calculateWithNumber1:(int)number1 andNumber:(int)number2 andCalculate:(calculateBlock)calculate;
直接使用calculateBlock來定義作為方法的引數。做到的呼叫為:
- (int)calculateWithNumber1:(int)number1 andNumber2:(int)number2 andCalculate:(calculateBlock)calculate
{
//經常變化的功能,在設計當中叫做封裝變化
return calculate(number1,number2);
}
在main中程式碼為:
int (^sumBlock)(int a, int b) = ^int (int a, int b) {
int result = (a * b);
x = result;
return result;
};
呼叫自己定義的方法:
int sum =[cal calculateWithNumber1:10 andNumber:20 andCalculate:sumBlock];
在不知道使用什麼樣的方式計算時可以使用傳入block。來假設。