NSMutableCopying
を実装する事がちょうど-mutableCopy
のための実装を繰り返す必要がなく-mutableCopyWithZone:
を実装するために得るようにNSObject
自体は(-mutableCopyWithZone:
に呼び出すことによって、(たとえそれらNSCopying
またはNSMutableCopying
に適合しない、すべてのオブジェクトの)-mutableCopy
を実装しているためこれは、 )。 NSObject
から継承
すべてが-mutableCopy
に応答しますが、あなたが実際にそれを呼び出した場合NSNumber
は-mutableCopyWithZone:
に応答しないので、それがクラッシュしていました。あなたは
assert([NSObject instanceMethodForSelector:@selector(mutableCopy)] == [NSNumber instanceMethodForSelector:@selector(mutableCopy)])
でこれを見ることができます
bbumの分析はかなりよく、これをまとめたもの - 動的にこれらのチェックを行っているとき、あなたがまったく期待していない答えを得る可能性があるため、いくつかの微妙なエッジの場合があります。
どこから来たのかをおねがいします。 – bbum
素晴らしい情報NSObjectのドキュメントを見ていれば、これはNSMutableCopyingプロトコルを採用したクラスにとって便利なメソッドです。 mutableCopyWithZoneの実装がない場合は例外が発生します:。 –
@BenFlynn Haha、私は半分しか自分自身を思い出しました。これは、コードやドキュメンテーションで簡単に発見できる機能ではありません。 –