0

NSObject を拡張するこの BasicNode インターフェイスがあります。

ある時点で、そのインスタンスを辞書のキーとして使用する必要があります。

BasicNode *node = [BasicNode node];
[aMutableDictionary setObject:@"hello" forKey:node]

これにより、プログラム「signal SIGABRT」がクラッシュします。Java では、ハッシュマップはオブジェクトのデフォルトのハッシュ メソッドを呼び出してそのキーを取得します。オブジェクトを NS(Mutbale)Dictionary のキーとして使用できるようにするために objC に実装するメカニズムはありますか?

4

1 に答える 1

2

はい、NSObject の継承をキーとして使用できますが、実装する必要があります。

 + (id)copyWithZone:(NSZone *)zone

メソッドであり、これはキーとして使用するための要件です。それを実装するには、独自のクラスは次のようになります。

 - (id)copyWithZone:(NSZone *)zone {
      MyObject *objectCopy = [[MyObject allocWithZone:zone] init];
      // Copy over all instance variables from self to objectCopy.
      // Use deep copies for all strong pointers, shallow copies for weak.
      return objectCopy;
 }

こちらのブログ記事から!

幸運を!

于 2012-08-23T12:31:24.860 に答える