程式碼如下:
typedef void (^fun) (double a, double b);
double c = 3;
fun multiply = ^(double a, double b) { c = a * b; };
multiply(4, 5);
printf("c = %fn", c);
注意到這裡用了一下typedef,然後問題就是變數c是在multiply定義時一起宣告的,c是作為常數來使用的,也就是不能執行c = a * b;這個運算。如果想要修改c的話,一種方法是增加__block前綴?也就是:__block double c = 3;另一種是把c宣告為static全域變數? 如:static double c = 3;
這兩種方法都是合理的嗎?求解答:)
使用
__block
的方法是可行的,但是static
應該這樣寫:想了解這個問題的本質,建議閱讀這本書《Objective-C高級程式設計 iOS與OS X多執行緒與記憶體管理》