一,全局变量
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;}
}
结果:
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。