我有此以下代码:的NSDictionary在IOS 6
NSAssert(dst, @"sdiasiosadiodasio");
// Add to a list so that we don't lose the references
[layersToDsts setObject:dst forKey:layer];
NSLog(@"The key is %lu", layer);
for (Bit *layer in [layersToDsts allKeys])
{
BitHolder *dst = [layersToDsts objectForKey:layer];
NSLog(@"My added key is %lu", layer);
NSAssert(dst, @"ddddd");
}
layersToDsts是一个可变NSDictionary
。我试图用一个对象的地址作为键,映射到另一个对象。
的代码工作在iOS 5,出于某种原因,该代码给出
The key is 484196128
My added key is 484253328
Assertion failure in -[Animator animateImpl:] 'NSInternalInconsistencyException', reason: 'ddddd'
很显然,我加入到词典中的对象不能被检索。该对象不是零。为什么映射键是另一个地址?该代码在iOS 5上工作完美... ...
但我的代码在iOS 5中工作... ... – SmallChess
@StevenFisher我不同意这是一个重复的...他/他没有询问关键被复制,他/他问为什么代码失败,显然没有意识到密钥被复制。 –
嗯。很公平。不过,该副本是原因。任何需要字典中的密钥不被复制的代码都不适用于任何iOS版本。我想我们必须看到'Layer'的定义才能解决这个问题。 –