私はいくつかのライブラリコードを書いています。ライブラリのユーザは、intを使うべきメソッドとNSNumberを使うべきかについて、異なる意見を持っていることがあります。私はintとNSNumberの間で複数のディスパッチを行うことはできますか?
[myObject myMethod:5];
または
[myObject myMethod:[NSNumber numberWithInt:5]]
のいずれかが同じように動作
ようにする方法を設定するにはいくつかの方法をしたいと思います。 Javaでは、自動ボクシングはこれを比較的簡単にしますが、これを目的で実行する方法は認識していません。この仕事をすることは可能ですか?
最終的にはあなたがあなたの番号で何をしているのかによって異なりますが、一般的には、すべてのものを 'methodWithInt:'に集めるようになっています。 – livingtech
methodWith *何百万回も呼び出す必要がある場合、methodWithIntは10倍高速(またはそれ以上)になる可能性があり、オートリリースプールに100万個のNSNumbersを落とさない可能性があります。だから、intがいつもどんなものか確かめていれば、ライブラリとしてどのように呼び出されるのかわからないので、methodWithIntの方に傾いていなければなりません。呼び出し元が自動リースされたNSNumberを使用していた場合、百万回の呼び出しでNSNumberのメモリフットプリントは約12 MB程度になります。 –