iOS全局变量的声明和使用

在一个项目中,我们可能需要定义几个全局变量,在我们程序的任何位置都可以进行访问,提高我们的开发效率。在iOS中我们如何来实现呢?我们主要使用的是AppDelegate类来实现。如下:

(1)AppDelegate.h:

  1. #import <UIKit/UIKit.h>
  2. @interface AppDelegate : UIResponder <UIApplicationDelegate>
  3. @property (strong, nonatomic) UIWindow *window;
  4. @property (strong,nonatomic) NSString *myName;//声明一个全局变量;
  5. @end

(2)ViewController.m

这个是第一个页面。

  1. #import "ViewController.h"
  2. #import "AppDelegate.h"   //需要引入这个头文件;
  3. @interface ViewController ()
  4. @end
  5. @implementation ViewController
  6. - (void)viewDidLoad {
  7. [super viewDidLoad];
  8. }
  9. - (void)viewDidAppear:(BOOL)animated{
  10. [super viewDidAppear:true];
  11. AppDelegate *app = [[UIApplication sharedApplication] delegate];
  12. NSLog(@"%@",app.myName);
  13. app.myName = @"第一个页面";
  14. }
  15. @end

(3)SecondViewController.m

这个是第二个页面。

  1. #import "SecondViewController.h"
  2. #import "AppDelegate.h"
  3. @interface SecondViewController ()
  4. @end
  5. @implementation SecondViewController
  6. - (void)viewDidLoad {
  7. [super viewDidLoad];
  8. }
  9. - (void)viewDidAppear:(BOOL)animated{
  10. AppDelegate *app = [[UIApplication sharedApplication] delegate];
  11. NSLog(@"%@",app.myName);
  12. app.myName = @"第二个页面";
  13. }
  14. @end

最后在两个页面之间跳转,输出结果如下:

这表示我们对同一个变量进行了操作。为什么在AppDelegate中可以声明全局变量呢?因为使用了单例,AppDelegate就是一个单例的类,实现了UIApplicationDelegate这个委托。只要我们在程序的任何地方声明了AppDelegate的对象,这个对象就是唯一的,所以就可以实现全局变量

时间: 2024-08-07 13:55:42

iOS全局变量的声明和使用的相关文章

局部变量与全局变量在声明时的注意事项

/* ============================================================================ Name : TestVariable.c Author : lf Version : Copyright : Your copyright notice Description : 局部变量与全局变量在声明时的注意事项 全局变量只能要常量赋值,但是局部变量可用常量和表达式以及函数赋值. 这是为什么呢? 程序在开始执行时需要用适当的值来初

C++全局变量的声明和定义

(1)编译单元(模块) 在VC或VS上编写完代码,点击编译按钮准备生成exe文件时,编译器做了两步工作: 第一步,将每个.cpp(.c)和相应的.h文件编译成obj文件: 第二步,将工程中所有的obj文件进行LINK,生成最终.exe文件. 那么,错误可能在两个地方产生: 一个,编译时的错误,这个主要是语法错误: 一个,链接时的错误,主要是重复定义变量等. 编译单元指在编译阶段生成的每个obj文件. 一个obj文件就是一个编译单元. 一个.cpp(.c)和它相应的.h文件共同组成了一个编译单元.

C++中全局变量的声明和定义

原文链接:http://blog.csdn.net/candyliuxj/article/details/7853938 (1)编译单元(模块) 在VC或VS上编写完代码,点击编译按钮准备生成exe文件时,编译器做了两步工作: 第一步:将每个.cpp和相应的.h文件编译成obj文件: 第二步:将工程所有的obj文件进行Link,生成最终的.exe文件. 这样,错误可能在两个地方产生: 一个是在编译的时候发生的错误,主要是语法错误: 一个是在链接的时候的错误,主要是重复定义变量等. 编译单元指在编

iOS的属性声明:retain和strong的区别

声明属性时用strong或者retain效果是一样的(貌似更多开发者更倾向于用strong).不过在声明Block时,使用strong和retain会有截然不同的效果.strong会等于copy,而retain竟然等于assign! 当然定义Block还是应该用copy(还有其他需要注意的地方,可以参考这篇文章:iOS: ARC和非ARC下使用Block属性的问题),因为非ARC下不copy的Block会在栈中,ARC中的Block都会在堆上的. 可以这样复现问题.在非ARC环境下,定义一个简单

iOS:不同属性声明方式的解析

代码: /* 属性声明方式说明: ----------------------- 1 @interface ... { id name } @end 这样声明的属性其实可以认为是private属性,因为它只能在方法里通过name引用,外部无法通过“object.name”的方式进行引用 (内部也不能通过self引用) ---------------------- 2 @interface ... @property id name @end 这样声明的属性可以认为是public属性,内部通过“s

stm8 全局变量定义 声明

1.ST Visual Develop 开发环境下.h文件里面不能定义变量,要把变量定义在.C文件里面,然后在.H文件里面声明即可.补充:今天突然发现还有一种情况,变量在一个.h文件里定义后,在另外的一个.h文件里做extern声明后也可以,后来发现,这两个.h文件都没有自己的.c文件以及都是在工程文件的同层路径而不是在模块的文件里面. 2.ST Visual Develop 开发环境如果出现进入或者退出DEBUG很慢,或者菜单栏消失这类问题,就是工程文件出现了异常,只要新建工程或者把近期OK的

C++全局变量的定义和声明

编译单元 编译分为两个步骤: 第一步:将每个.cpp或.c和相应的.h文件编译乘obj文件(包含预编译,汇编.编译) 第二部:将obj文件进行Link,生成最终的可执行文件 根据该阶段错误大致可分为两类: 一个,编译时的错误,大多为语法错误 一个,链接时错误,主要是变量.函数定义错误 编译单元指在编译阶段生成的每个obj文件 一个obj文件就是一个编译单元 一个.cpp或.c和它相应的.h文件共同组成了一个编译单元 一个由很多编译单元组成,每个obj文件里包含了变量存储的相对地址等 声明和定义

JavaScript 声明全局变量和局部变量

JS中声明全局变量主要分为显式声明或者隐式声明下面分别介绍. 声明方式一: 使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量.该方式即为显式声明详细如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 <script>   var test = 5;//全局变量   function a(){     var a = 3;//局部变量     alert(a);   }   function b(){   

iOS数据本地持久化

p1: iOS开发中本地存储主要有三种形式 XML属性列表(plist)归档 Preference(偏好设置) NSKeyedArchiver归档(NSCoding) 应用沙盒 什么是应用沙盒 要想在本地存储数据,那就要知道一下什么是应用沙盒 ,其实很好理解应用沙盒就是应用的文件夹,与其他文件系统隔离.每一个iOS应用都有自己的应用沙盒,应用必须待在自己的沙盒里,其它应用不能访问该沙盒.如何获取应用沙盒路径,可以通过打印NSHomeDirectory()来获取应用沙盒路径,下图为打印路径结果: