iOS の経験はあまりありませんが、いくつかのレガシー コードに取り組んでいます。このプロジェクトでは、オブジェクトを辞書のキーとして使用します。
NSMutableDictionary * dict;
RoleContainer * role = [Class getRole];
[dict setObject:[Class getData] forKey:role];
ロールを別の関数に渡しました。データを取得しようとすると:
data = [dict objectForKey:role];
戻り値が空の場合もあります。約10%の確率で発生します。コードを調べてみると、役割を関数に渡した後、「役割」オブジェクトの参照が変更されていることがわかりました。たとえば、0x002bf500 から 0x00222bad まで。
なんで?