連想参照の使用は、カテゴリ変数を偽造するために最も広く使用されている方法のようですが、私はそれをハックと考えずにはいられません。私はおそらく間違っています。したがって、この質問。したがって、Apple が多くのフレームワーク クラスにカテゴリを使用していることは知っていますが、3.1 よりも前 (連想参照が追加されたとき) にカテゴリを使用していました。彼らは別の方法でそれをしていたのだろうか?このように使用される連想参照は Apple によって推奨されていますか? (これを維持するためのドキュメントはありますか?) 設計の観点から、ストレージをカテゴリに追加することは避けるべきものですか?
質問する
407 次
1 に答える
1
関連付けられたオブジェクトは、 「最新の」ランタイムの標準関数として提供されるため、ハックではありません。
そうです、関連付けられたオブジェクトは「モダン」ランタイムの前に実装されていませんでしたが、Apple はそれらを使用しませんでした。クラスに変数を追加したい場合は、メイン クラスで明示的なセッター/ゲッター/内部 iVar の組み合わせで行われました (特に、NSSplitView のような古い Cocoa クラスでこれに気付くでしょう) (なぜなら、フレームワークを所有している場合は、関連付けられたオブジェクトを使用しますか?) Apple のカテゴリの使用は、言語レベルのような類似の機能をグループ化する古い方法でした#pragma mark -
。
于 2013-02-13T14:54:58.087 に答える