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”...无论是指针,指向指针,指针的指针,我想知道有没有能够更快地解决单身人士的财产问题。
答案 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
a
和b
是彼此独立的完全不同的变量,即使它们最初都包含值5。