我正在尝试创建一个 NSDictionary 来跟踪函数的调用对象。我想为每个对象创建一个唯一的字符串,而对此一无所知。我的第一个想法是使用对象指针的内存地址,但我不知道该怎么做。
有什么想法吗?我需要使用 NSObject 中的某种唯一 id 作为字典中的键。
我正在尝试创建一个 NSDictionary 来跟踪函数的调用对象。我想为每个对象创建一个唯一的字符串,而对此一无所知。我的第一个想法是使用对象指针的内存地址,但我不知道该怎么做。
有什么想法吗?我需要使用 NSObject 中的某种唯一 id 作为字典中的键。
如果您的应用程序支持 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"];
我的建议是不要使用字典。如果要将它们放入数组中,可以将其视为具有自动生成的唯一键(索引)的字典。这确实正是您所描述的。如果由于某种原因您必须使用字典,我的建议是实现我所说的相同模型,但您必须生成和维护密钥。
虽然我同意您的解决方案听起来可能不是最好的方法,但您是否-hash
在NSObject
协议中考虑过?都NSObjects
应该返回一个。预先警告它是一个散列,所以两个不同的对象有可能具有相同的散列。
NSObject
您还可以考虑您的集合实现的类别。该类别可以生成一个 UUID 用作键。