我有此以下代碼:的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'的定義才能解決這個問題。 –