찾다

 >  Q&A  >  본문

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

代码如下:
typedef void (^fun) (double a, double b);
double c = 3;
fun multiply = ^(double a, double b) { c = a * b; };
multiply(4, 5);
printf("c = %f\n", c);

注意到这里用了一下typedef,然后问题就是变量c是在multiply定义时一起声明的,c是作为常量来使用的,也就是不能执行c = a * b;这个操作。如果想要修改c的话,一种方法是增加__block前缀?也就是:__block double c = 3;另一种是把c声明为static全局变量? 如:static double c = 3;

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

巴扎黑巴扎黑2766일 전540

모든 응답(1)나는 대답할 것이다

  • PHPz

    PHPz2017-04-24 09:15:55

    __block을 사용하는 방법도 가능하지만, static은 다음과 같이 작성해야 합니다.

    으아악

    이 문제의 본질을 이해하려면 "Objective-C 고급 프로그래밍 iOS 및 OS X 멀티스레딩 및 메모리 관리" 책을 읽어보는 것이 좋습니다.

    회신하다
    0
  • 취소회신하다