実際、この-[NSHTTPURLResponse allHeaderFields]メソッドは大文字と小文字を区別しないNSDictionaryインスタンスを返します。_CFCapitalizeHeaderこれは、CFNetworkの最近のバージョンで削除された機能とは何の関係もありません。残念ながら、そのソースコードはもう利用できません。
allHeaderFieldsこれは、メソッド(OS X 10.8.3)の簡略化されたコールグラフです。
-[NSHTTPURLResponse allHeaderFields] -- Foundation
CFHTTPMessageCopyAllHeaderFields() -- CFNetwork
HTTPMessage::copyAllHeaderFields(__CFArray const**)
MixedDict::copyAsOrdinaryDict(__CFAllocator const*, __CFArray const**) const
CFDictionaryCreateMutable()
allHeaderFieldsこのディクショナリは、メソッドの結果として最終的に返されます。渡される3番目のパラメーターCFDictionaryCreateMutableは次のようになります。
version = 0
retain = _keyRetain(__CFAllocator const*, void const*) // __ZL10_keyRetainPK13__CFAllocatorPKv
release = _keyRelease(__CFAllocator const*, void const*) // __ZL11_keyReleasePK13__CFAllocatorPKv
copyDescription = _keyCopyDescription(void const*) // __ZL19_keyCopyDescriptionPKv
equal = _keyEqual(void const*, void const*) // __ZL9_keyEqualPKvS0_
hash = _keyHash(void const*) // __ZL8_keyHashPKv
_keyEqualC ++メソッドは、最終的にオプションCFStringCompareを使用して呼び出しkCFCompareCaseInsensitiveます。
これが、NSHTTPURLResponseヘッダーの大文字と小文字の区別を気にしない理由です。
ただし、この動作が文書化されていないことは非常に残念です。レーダー#13715902を複製して文書を求めてください。