全局变量
一,全局变量
1,在m文件中的所有方法,类定义和函数定义之外
例:Square.m中定义一个全局变量 , 在main.m中引用
Square.m代码如下:
- //
- // Square.m
- // Square
- //
- // Created by Apple on 2017/9/9.
- // Copyright 2017年 Apple. All rights reserved.
- //
- #import "Square.h"
- int global_val = 20;//定义一个全局变量
- @implementation Square : Rectangle
- -(void) setSide:(int)s
- {
- [ self setWidth:s addHeight:s];
- }
- -(int) side
- {
- return self.width;
- }
- @end
使用外部的全局变量要使用extend关键字
main.m代码如下:
- //
- // main.m
- // Square
- //
- // Created by Apple on 2017/9/9.
- // Copyright 2017年 Apple. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- #import "Square.h"
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- extern int global_val;//
- int s = global_val;
- NSLog(@"我得到的全局变量为 : %i" , s);
- return 0;}
- }
结果如下:
既然是全局变量,那么任何地方的修改都会在全局产生作用
进一步测试
Square.m代码:
- //
- // Square.m
- // Square
- //
- // Created by Apple on 2017/9/9.
- // Copyright 2017年 Apple. All rights reserved.
- //
- #import "Square.h"
- int global_val = 20;//定义一个全局变量
- @implementation Square : Rectangle
- -(void) setSide:(int)s
- {
- [ self setWidth:s addHeight:s];
- }
- -(int) side
- {
- return self.width;
- }
- -(void) change
- {
- global_val = 30;//此处改变全局变量的值
- }
- -(int) get_global
- {
- return global_val;
- }
- @end
main.m
- //
- // main.m
- // Square
- //
- // Created by Apple on 2017/9/9.
- // Copyright 2017年 Apple. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- #import "Square.h"
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- extern int global_val;//
- int s = global_val;
- NSLog(@"我得到的全局变量为 : %i" , s);
- Square *mySquare = [[Square alloc] init];
- [mySquare change];
- NSLog(@"Square change 后 s : %i ;;;;; 的全局变量 : %i" , s , global_val);
- global_val = 100;
- NSLog(@"s = %i , Square 中的全局变量 : %i " , s , [mySquare get_global]);
- return 0;}
- }
结果:
来源: http://www.bubuko.com/infodetail-2303445.html