Objctive-C 全局变量
admin
2023-07-28 20:40:06
0

一,全局变量

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 
#import "Square.h"



int main(int argc, const char * argv[]) {
    @autoreleasepool {
        extern int global_val;//
        int s = global_val;
        NSLog(@"我得到的全局变量为 : %i" , s);
        return 0;}
}

结果如下:

Objctive-C 全局变量

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



进一步测试

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 
#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;}
}

结果:

Objctive-C 全局变量

相关内容

热门资讯

40岁初婚的男女:爱情、算计与... 晚婚和晚育,开始成为当代社会的主流。根据人口普查年鉴,过去40年间,中国人初婚年龄平均推迟了整整5岁...
魔笛谢幕,古典中场的世界杯终章 澎湃新闻记者 张颖终场哨响,莫德里奇走向场边。二十年世界杯镜头里,那个从战火中走出的牧羊少年,如今已...
15分钟一局的王者荣耀,成了数... 一局王者荣耀的时间是15分钟,而这段时间,AI恰好能解出一道博士水平的数学题。梦溪是一名王者荣耀爱好...
方太抽油烟机发出鸣叫声 可能是抽气管被堵塞了,造成风鸣作用,拆下过滤网,泡漂白剂清洗干净,抽风机里里外外也一并清洗干净即可。...
热水器发出刺耳的鸣叫 1、可能是家庭的水压不够导致热水器里面的热水出现倒流的情况发出的声音。2、安装热水器的时候没有排空里...
热水器发出刺耳的鸣叫怎么办 1、发出响声很正常,因为加热器属于电阻性能的烧水是会发出响声,电热管在通电后开始加热就会发出一种燃烧...
总闸总是跳闸怎么解决 总闸跳闸是一种常见的电气问题,可能由多种原因引起。以下是一些可能的解决方法:1. 过载:如果连接到总...
动力电总是跳闸是怎么回事 动力电总是跳闸可能有多种原因,以下是一些常见的原因和解决方法:1. 过载:如果连接到动力电的设备超过...
巴基斯坦一客运巴士坠山,已致超... 巴基斯坦俾路支省灾害管理局3日通报,位于开伯尔-普什图省与俾路支省交界的达纳萨尔地区,一辆客运巴士当...
向太谈韩红“走个面”言论争议:... 7月2日,向太陈岚发布视频,就韩红近期因“给个面”言论引发的争议作出回应。她表示,“我真没想到,韩红...