比如在tabbar的开发中,可以某个页面的数据需要在back到此页面后依然有效。

可以用 appDelegate 这个对象来创建你的全局数据

这个内建的对象,在 APP 启动时产生,在 APP 退出时销毁

下面是实例
假设我们给这个变量定义的名字为 GlobalValue

  1. 在 IphoneViewAppDelegate.h 中加入下面的代码(加在 interface 外)

    // 记录当次运行实例中 WebView 当前动作
    @property (nonatomic, retain) NSString *GlobalValue;

  2. 在 IphoneViewAppDelegate.m 文件的前面加入下面的代码

    // 记录当次运行实例中 WebView 当前动作
    @synthesize GlobalValue;

  3. 在 IphoneViewController.m 文件的 - (void)viewDidLoad 方法中加入下面的代码

    // 引入全局变量
    IphoneViewAppDelegate appDelegate = (IphoneViewAppDelegate)[[UIApplication sharedApplication] delegate];
    // 对变量写入
    appDelegate.GlobalValue = @"loading";

在你的文件 *.m 任意一个地方,都可以通过
IphoneViewAppDelegate *appDelegate = (IphoneViewAppDelegate)[[UIApplication sharedApplication] delegate];//这种写法会报警告,那么应当修改为直接调用

(IphoneViewAppDelegate *)[[UIApplication sharedApplication] delegate]。。。。
来获得这个全局的对象
然后可以对 appDelegate.GlobalValue 进行读写
在切换界面的过程中,也能读写这个变量,这个值会在退出 APP 时自动销毁

例子:

#import <UIKit/UIKit.h>

@class KidsViewController;

@interface KidsAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) KidsViewController *viewController;
@property (strong, nonatomic) IBOutlet UINavigationController *navController;
@property (strong, nonatomic) NSMutableArray *classList;
@property (strong, nonatomic) NSMutableArray *childList;
@property (nonatomic) int currentType;
@property (nonatomic, strong) NSString *currentSelectName;

@end

@implementation KidsAppDelegate
@synthesize classList = _classList;
@synthesize childList = _childList;
@synthesize currentType = _currentType;
@synthesize currentSelectName = _currentSelectName;

- (void)dealloc
{
    [_window release];
    [_currentSelectName release];
    [_viewController release];
    [_classList release];
    [_childList release];
    [super dealloc];
}

赋值和调用

- (void)getChildList:(NSMutableArray *)array
{
    if (array) {
        
        self.childArray = array;
        ((KidsAppDelegate*)[[UIApplication sharedApplication]delegate]).childList = self.childArray;
        
    }
    
}

self.currentType = ((KidsAppDelegate*)[[UIApplication sharedApplication]delegate]).currentType;

有几种方法

some developers recommend use singleton patter (ref link http://blog.csdn.net/kmyhy/article/details/7026511)

方法1:使用静态变量 (不推荐)

方法2: 使用singleton pattern (ref link: http://nice.iteye.com/blog/855839)

方法3:把全局变量设置到AppDelegate中

例: 定义和使用一个全局变量"isLogin"

AppDelegate.h

@interface AppDelegate :UIResponder <UIApplicationDelegate>

@property (strong,nonatomic)UIWindow *window;

@propertyBOOL isLogin;

@end

AppDelegate.m

@implementation AppDelegate

@synthesize window =_window;

@synthesize isLogin;

@end

那么在其他的class里,则可以通过下列代码调用全局变量

AppDelegate *delegate=(AppDelegate*)[[UIApplicationsharedApplication]delegate];

delegate.isLogin=YES;

Cocoa开发中, 如何用全局变量的更多相关文章

  1. ios开发中全局变量设置和调用方法

    ios开发中,全局变量设置和调用方法如下:在AppDelegate.h文件中设置全局变量:@interface ***AppDelegate{NSString *myName;}@property ( ...

  2. XCode和Cocoa在开发中使用第三方dylib示例

    XCode和Cocoa在开发中使用第三方dylib示例 www.educity.cn   发布者:yukowang   来源:网络转载   发布日期:2014年06月13日      XCode和Co ...

  3. iOS开发中静态库制作 之.a静态库制作及使用篇

    iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...

  4. iOS项目开发中的知识点与问题收集整理①(Part 一)

    前言部分 注:本文并非绝对原创 大部分内容摘自 http://blog.csdn.net/hengshujiyi/article/details/20943045 文中有些方法可能已过时并不适用于现在 ...

  5. AngularJS移动开发中的各种坑

    捂脸,辛酸泪ing...... 本文主要涉及部分在移动设备上特有的问题. 相对来说,Jquery侧重DOM操作,AngularJS是以视图模型和双向绑定为核心的. DOM操作的问题 避免使用 jQue ...

  6. [Unity游戏开发]向量在游戏开发中的应用(三)

    本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/51088236 在上一篇博客中讲了利用向量点乘在游戏开发中应用的几种情景.本 ...

  7. Web 开发中应用 HTML5 技术的10个实例教程

    HTML5 作为下一代网站开发技术,无论你是一个 Web 开发人员或者想探索新的平台的游戏开发者,都值得去研究.借助尖端功能,技术和 API,HTML5 允许你创建响应性.创新性.互动性以及令人惊叹的 ...

  8. iOS开发中的4种数据持久化方式【一、属性列表与归档解档】

    iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹.ios开发中, ...

  9. 二十八、带给我们一种新的编码思路——EFW框架CS系统开发中的MVC模式探讨

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

随机推荐

  1. C++ STL容器之 map

    map 是一种有序无重复的关联容器. 关联容器与顺序容器不同,他们的元素是按照关键字来保存和访问的,而顺序元素是按照它们在容器中的位置保存和访问的. map保存的是一种 key - value 的pa ...

  2. C++系统学习之二:字符串

    上一篇文章主要学习的是C++的基本类型,它们是C++语言直接定义的,它们体现了计算机硬件本身具备的能力.而本篇文章将主要学习内置类型之外的标准库所定义的类型,分别是string和vector,此外还将 ...

  3. Spring Boot + Mybatis + Druid 动态切换多数据源

    在大型应用程序中,配置主从数据库并使用读写分离是常见的设计模式. 在Spring应用程序中,要实现读写分离,最好不要对现有代码进行改动,而是在底层透明地支持. 这样,就需要我们再一个项目中,配置两个, ...

  4. grub加密。

    一.介绍 安全无小事  linux系统的安全分为很多方面,什么端口啊,什么网络啊,听着都特么烦,今天谈谈最简单明显的密码安全. 二.单用户模式 单用户模式个人觉得相当有用,可以用来修复系统,修改密码… ...

  5. IE8 png图片黑色阴影的解决方案!

    以前都没有留意这个问题,最近开发中才发现. 什么情况下会出现黑边? PNG透明图片,同时有阴影,具备着两个IE8是不会有问题的,再加上使用了 “渐变显示”,就会出现了. 解决方法: img{displ ...

  6. 小数据池 is 和 ==的区别

    小数据池 一.小数据池 1)代码块 python程序是由代码块构成的,一个代码块的文本作为pythont程序执行的单元 官方文档: A Python program is constructed fr ...

  7. python爬虫入门四:BeautifulSoup库(转)

    正则表达式可以从html代码中提取我们想要的数据信息,它比较繁琐复杂,编写的时候效率不高,但我们又最好是能够学会使用正则表达式. 我在网络上发现了一篇关于写得很好的教程,如果需要使用正则表达式的话,参 ...

  8. (转) 改变UITextField placeHolder颜色、字体 、输入光标位置等

    我们有时需要定制化UITextField对象的风格,可以添加许多不同的重写方法,来改变文本字段的显示行为.这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围,甚至修改placeHo ...

  9. ERROR! The server quit without updating PID file (/usr/local/var/mysql/bogon.pid).

    本文转载自http://www.jb51.net/article/48625.htm 今天网站web页面提交内容到数据库,发现出错了,一直提交不了,数找了下原因,发现数据写不进去!第一反应,重启mys ...

  10. nrf52810学习笔记——三

    在开发nRF52系列的蓝牙方案的时候,会用到IDE.SDK.softdevice.nrfgoStudio等开发软件,这里做一个小小的总结. 首先,下载SDK,里面有适合keil4号iar7(iar8也 ...