在objc的代码块中 使用本地变量 和 全局变量有什么区别。
绿橙子教程 使用本地变量
#import <Foundation/Foundation.h>
typedef double (^MKSampleMultiplyBlockRef)(void);
int main(int argc, const char * argv[]) {
@autoreleasepool {
double a = 10,b=20;
MKSampleMultiplyBlockRef multiply = ^(void){return a*b;};
NSLog(@"%f",multiply());
a = 20,b=30;
NSLog(@"%f",multiply());
}
return 0;
}
输出: 200.000000 200.000000
这里输出值相同,没有因为变量值而改变的原因 绿橙子书解释是:
同样绿橙子介绍在代码块中使用全局变量的时候 代码:
#import <Foundation/Foundation.h>
typedef double (^MKSampleMultiplyBlockRef)(void);
int main(int argc, const char * argv[]) {
@autoreleasepool {
static double a = 10,b=20;
MKSampleMultiplyBlockRef multiply = ^(void){return a*b;};
NSLog(@"%f",multiply());
a = 20,b=30;
NSLog(@"%f",multiply());
}
return 0;
}
输出:200.000000
600.000000 请教为什么使用全局变量后输出值发生了改变? 书中没有介绍。特来请教。 3q~~~