objective-C中代码块中的本地变量,__block前缀和static全局变量

浏览:62日期:2023-12-15

问题描述

代码如下: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;

这两种方法都是合理的吗?求解答:)

问题解答

回答1:

使用__block的方法是可行的,但是static应该这样写:

static double c;c = 3;

想了解这个问题的本质,建议读一下这本书《Objective-C高级编程 iOS与OS X多线程和内存管理》

相关文章: