Objective c 指向singleton中属性的指针 NSMutableDictionary*searchFilters=[GlobalData实例].searchFilters; 如果([searchFilters count]==0) { NSLog(@“不再有密钥,销毁全局筛选器”); [GlobalData实例].searchFilters=nil;//这没问题 //searchFilters=nil;

Objective c 指向singleton中属性的指针 NSMutableDictionary*searchFilters=[GlobalData实例].searchFilters; 如果([searchFilters count]==0) { NSLog(@“不再有密钥,销毁全局筛选器”); [GlobalData实例].searchFilters=nil;//这没问题 //searchFilters=nil;,objective-c,pointers,Objective C,Pointers,您的指针searchFilters指向与[GlobalData instance]相同的位置。searchFilters,但它不是同一个指针,您创建的是一个别名 因此searchFilters=nil将nil分配给您创建的别名,原始指针保持不变 这与C:)中的行为相同。您有两个不同的指针指向同一个对象。对象是单例的事实没有区别-它们是恰好共享相同值的不同变量。类似地: NSMutableDictionary *searchFilters = [GlobalData instance].searc

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

因此searchFilters=nil将nil分配给您创建的别名,原始指针保持不变


这与C:)中的行为相同。

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

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
}

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

我想使用别名来为原始值置零。是否可能。我尝试了*searchFilters=null;也失败了。您无法通过为别名置零来为指针置零,别名是完全不同的ferent pointer.*searchFilters=null所做的只是分配“null”通过searchFilters.IIRC指向值指针。Obj-C中没有null。我可以完全理解您的示例。但在本例中,b不是指针。我假设我的searchFilters是指针,因此我有权使用此指针修改原始值…但看起来更像是复制数据f的变量容器rom指向值…我的全部观点是。我需要[GlobalData instance].searchFilters的快捷方式,这样我就不需要每次都重新键入“[GlobalData instance].searchFilters”…无论是指针、指向指针的指针、watever,我想知道是否有wat可以更快地在singleton中处理该属性。
int a = 5;
int b = a;
b = 6;
printf("a = %d and b = %d", a, b); // Prints "a = 5 and b = 6