指向单身人士的财产

时间:2011-07-01 02:14:19

标签: objective-c pointers

NSMutableDictionary *searchFilters = [GlobalData instance].searchFilters;
if([searchFilters count] == 0)
{
    NSLog(@"no more keys, destroy global filters");

    [GlobalData instance].searchFilters = nil; // this is okay

    // searchFilters = nil; <-- this is not okay
}

大家好,有人可以帮助我理解Objective C中更好的指针吗? 如上所示,我有一个存储在名为'GlobalData'的单例中的字典属性,使用指针* searchFilters我可以指向此字典并正确读取其值,但是,如果我想修改其值,则代码如'searchFilters = nil'根本不会修改全局单例中的值。

我需要一个[GlobalData实例] .searchFilters的快捷方式,这样我就不需要每次都重新输入“[GlobalData instance] .searchFilters”...无论是指针,指向指针,指针的指针,我想知道有没有能够更快地解决单身人士的财产问题。

2 个答案:

答案 0 :(得分:1)

你的指针searchFilters指向与[GlobalData instance] .searchFilters相同的位置,但它不是同一个指针,你创建的是别名。

所以searchFilters = nil为您创建的别名指定nil,原始指针保持不变。

这与C中的行为相同:)

答案 1 :(得分:0)

你有两个不同的指针指向同一个对象。对象是单例的事实没有区别 - 它们是恰好碰巧共享相同值的不同变量。类似地:

int a = 5;
int b = a;
b = 6;
printf("a = %d and b = %d", a, b); // Prints "a = 5 and b = 6

ab是彼此独立的完全不同的变量,即使它们最初都包含值5。