一,全局变量

1,在m文件中的所有方法,类定义和函数定义之外

例:Square.m中定义一个全局变量 , 在main.m中引用

Square.m代码如下:

////Square.m//Square////CreatedbyAppleon2017/9/9.//Copyright2017年Apple.Allrightsreserved.//#import"Square.h"intglobal_val=20;//定义一个全局变量@implementationSquare:Rectangle-(void)setSide:(int)s{[selfsetWidth:saddHeight:s];}-(int)side{returnself.width;}@end

使用外部的全局变量要使用extend关键字

main.m代码如下:

////main.m//Square////CreatedbyAppleon2017/9/9.//Copyright2017年Apple.Allrightsreserved.//#import<Foundation/Foundation.h>#import"Square.h"intmain(intargc,constchar*argv[]){@autoreleasepool{externintglobal_val;//ints=global_val;NSLog(@"我得到的全局变量为:%i",s);return0;}}

结果如下:

既然是全局变量,那么任何地方的修改都会在全局产生作用



进一步测试

Square.m代码:

////Square.m//Square////CreatedbyAppleon2017/9/9.//Copyright2017年Apple.Allrightsreserved.//#import"Square.h"intglobal_val=20;//定义一个全局变量@implementationSquare:Rectangle-(void)setSide:(int)s{[selfsetWidth:saddHeight:s];}-(int)side{returnself.width;}-(void)change{global_val=30;//此处改变全局变量的值}-(int)get_global{returnglobal_val;}@end

main.m

////main.m//Square////CreatedbyAppleon2017/9/9.//Copyright2017年Apple.Allrightsreserved.//#import<Foundation/Foundation.h>#import"Square.h"intmain(intargc,constchar*argv[]){@autoreleasepool{externintglobal_val;//ints=global_val;NSLog(@"我得到的全局变量为:%i",s);Square*mySquare=[[Squarealloc]init];[mySquarechange];NSLog(@"Squarechange后s:%i;;;;;的全局变量:%i",s,global_val);global_val=100;NSLog(@"s=%i,Square中的全局变量:%i",s,[mySquareget_global]);return0;}}

结果: