美文网首页
如何在类中添加全局变量

如何在类中添加全局变量

作者: pzb | 来源:发表于2017-03-01 16:04 被阅读95次

有些时候我们需要在类中添加某个在类中全局可用的变量,为了避免污染作用域,一个比较好的做法是在.m文件中使用static变量:

static    NSOperationQueue    * _personOperationQueue  =  nil;

@implementation     XYZPerson

...

@end

由于static在编译期就是确定的,因此对于 NSObject 对象来说,初始化的值只能是 nil。如何进行类似 init 的初始化呢?可以通过重载 initialize 方法来做:

@implementationXYZPerson

- (void)initialize {

             if(!_personOperationQueue) {

                   _personOperationQueue = [[NSOperationQueuealloc] init];

             }

}

@end

为什么这里要判断是否为 nil 呢?因为initialize方法可能会调用多次,后面会提到。

如果是在 Category 中想声明全局变量呢?当然也可以通过 initialize,不过除非必须的情况下,并不推荐在 Category 当中进行方法重载.

有一种方法是声明 static 函数,下面的代码来自AFNetworking,声明了一个当前文件范围可用的队列:

static dispatch_queue_t  url_session_manager_creation_queue() {

  staticdispatch_queue_taf_url_session_manager_creation_queue;

   staticdispatch_once_tonceToken;

   dispatch_once(&onceToken, ^{

    af_url_session_manager_creation_queue = dispatch_queue_create("com.alamofire.networking.session.manager.creation", DISPATCH_QUEUE_SERIAL);

});

      return  af_url_session_manager_creation_queue;

}

下面介绍一个有点黑魔法的方法,除了上面两种方法之外,我们还可以通过编译器的__attribute__特性来实现初始化:

__attribute__((constructor))

static  void  initialize_Queue() {

    _personOperationQueue = [[NSOperationQueuealloc] init];

}

@implementation   XYZPerson  (Operation) 

@end

相关文章

  • 如何在类中添加全局变量

    有些时候我们需要在类中添加某个在类中全局可用的变量,为了避免污染作用域,一个比较好的做法是在.m文件中使用stat...

  • WePy小程序实践总结干货

    如何在page页面,组件以及封装的js复用工具类文件获取app globalData中存储的全局变量以及方法? p...

  • iOS动态添加属性

    如何在不破坏原有类封装下添加属性( 动态添加property ) 当我们想给系统类或者自定义基类添加某个属性(简称...

  • Swift如何在应用中添加图标更换功能

    Swift如何在应用中添加图标更换功能 Swift如何在应用中添加图标更换功能

  • Vue全局变量的实现方式

    创建js文件,添加需要使用的全局变量 1、全局变量模块导入方式 2、全局变量挂载到Vue.ptototype中

  • MacOS开发遇到的各种坑

    问题1:配置完项目,添加按钮发现无法点击解决方式:AppDelegate中必须把界面类初始化为全局变量(无数只草泥...

  • iOS 动态绑定属性

    如何在不破坏原有类封装下添加属性 当我们想给系统类或者自定义基类添加某个属性(简称targetVaule)时,在不...

  • 小程序如何在页面间传递数组对象

    小程序如何在页面间传递数组对象 方法1:A页面跳转链接添加参数,B页面onLoad 接收 方法2:设置全局变量 g...

  • 类,变量,迭代器

    1、变量 python中实际有4种变量,分别是全局变量,类变量,实例变量,局部变量。 - 全局变量:类之外的变量,...

  • WebGIS 1-1瓦片地图文档显示

    1. 步骤 - 全局变量 - 添加地图容器 - 添加瓦片图层 - 将图层添加到地图容器中 - 设置地图显示中心坐标...

网友评论

      本文标题:如何在类中添加全局变量

      本文链接:https://www.haomeiwen.com/subject/yexcgttx.html