一,全局变量
1,在m文件中的所有方法,类定义和函数定义之外
例:Square.m中定义一个全局变量 , 在main.m中引用
Square.m代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
//
// 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代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
//
// 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代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
//
// 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
//
// 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;}
}
|
结果:
本文转自Aonaufly51CTO博客,原文链接:http://blog.51cto.com/aonaufly/1964430 ,如需转载请自行联系原作者