仅在目标 C 中本地更新全局变量值

Posted

技术标签:

【中文标题】仅在目标 C 中本地更新全局变量值【英文标题】:Updating global variable value locally only in objective C 【发布时间】:2015-07-06 10:29:22 【问题描述】:

我的应用程序中有一个公共数据,在某些视图中,我必须仅在此视图内更新这些值。 所以我在这个视图中创建了一个局部变量,然后我将这些变量的值设置为等于全局变量,最后我更新了这些全局变量。这是我的代码:

 if (_isCitySelector)
     _dataArray = [[NSMutableArray alloc] initWithArray:[[Commun sharedInstance] stateArray]];
     _subDataArray = [[NSMutableDictionary alloc] initWithDictionary:[[Commun sharedInstance] cityDictionary]];
  else 
     _dataArray = [[NSMutableArray alloc] initWithArray:[[Commun sharedInstance] categoriesArray]];
     _subDataArray = [[NSMutableDictionary alloc] initWithDictionary:[[Commun sharedInstance] subCategoriesDictionary]];
 
if (_activateParentSelection)
    for (PFObject *object in _dataArray) 
        NSMutableArray *tempArray = (NSMutableArray *)[_subDataArray valueForKey:object.objectId];
        if ([[tempArray objectAtIndex:0][@"titre"] isEqualToString: @"الكل"])
            continue;

        PFObject *tempObject = [PFObject objectWithClassName:[object parseClassName]];
        tempObject[@"titre"] = @"الكل";
        if (object[@"nbrAnnonce"])
            tempObject[@"categorie_id"] = object;
            tempObject[@"nbrAnnonce"] = @0;
        else
            tempObject[@"region_id"] = object;

        [tempArray insertObject:tempObject atIndex:0];
        [_subDataArray setObject:tempArray forKey:object.objectId];
    

这段代码工作得很好,但是这也会更新全局变量的问题吗?我的代码有什么问题!!!

更新 我不能使用copyWithZone,因为我的数据类型是PFObject,而 parse.com 对象不支持此功能

【问题讨论】:

试试这个! NSMutableArray *tempArray = [(NSMutableArray *)[_subDataArray valueForKey:object.objectId] mutableCopy] 【参考方案1】:

你应该试试这个数组的初始化方法:

NSArray *dataArray = [[NSMutableArray alloc] initWithArray:[[Commun sharedInstance] stateArray] copyItems:YES];

这将为您的数据创建一个单独的副本。

【讨论】:

我不能使用 copyItems,因为我的类中没有定义 copyWithZone(我正在使用 Parse 对象)

以上是关于仅在目标 C 中本地更新全局变量值的主要内容,如果未能解决你的问题,请参考以下文章

solidity:1. 变量和常量

触发更新 ServletContext 中的全局变量值

C++线程更新变量问题

Swift 3 设置全局变量值

python函数中局部变量与全局变量遵守规则

如果使用调试信息编译,则通过其名称获取全局变量地址