-1

我正在尝试创建一个 NSDictionary 来跟踪函数的调用对象。我想为每个对象创建一个唯一的字符串,而对此一无所知。我的第一个想法是使用对象指针的内存地址,但我不知道该怎么做。

有什么想法吗?我需要使用 NSObject 中的某种唯一 id 作为字典中的键。

4

3 回答 3

2

如果您的应用程序支持 iOS6 仅检查NSDictionaryOfVariableBindings宏。

代码将类似于:

    // Create the dictionary
    NSObject *firstObject  = [NSString stringWithString:@"My first item"];
    NSObject *secondObject = @"[@"an", @"array", @"of", @"strings"]";
    NSDictionary *theDic   = NSDictionaryOfVariableBindings(firstObject, secondObject);

    // Access data
    NSString *singleString  = [theDic objectForKey:@"firstObject"];
    NSArray  *listOfStrings = [theDic objectForKey:@"secondObject"];
于 2012-11-15T17:31:17.017 回答
0

我的建议是不要使用字典。如果要将它们放入数组中,可以将其视为具有自动生成的唯一键(索引)的字典。这确实正是您所描述的。如果由于某种原因您必须使用字典,我的建议是实现我所说的相同模型,但您必须生成和维护密钥。

于 2012-11-15T17:23:25.990 回答
-2

虽然我同意您的解决方案听起来可能不是最好的方法,但您是否-hashNSObject协议中考虑过?都NSObjects应该返回一个。预先警告它是一个散列,所以两个不同的对象有可能具有相同的散列。

NSObject您还可以考虑您的集合实现的类别。该类别可以生成一个 UUID 用作键。

于 2012-11-15T17:28:57.027 回答