私はSwiftでいくつかのisa swizzlingをテストし、NSObjectがスーパークラス(直接またはさらに上位)である場合、または '@objc'装飾を使用する場合にのみ機能することを発見しました。それ以外の場合は、C ++のような静的およびvtable-dispatchスタイルに従います。
Cocoa / NSObject基本クラスなしでSwiftクラスを定義するのは正常ですか?私が心配しているのであれば、これは、メソッドのインターセプトやランタイムイントロスペクションなど、Objective-Cのダイナミズムの大部分を先導することを意味します。
動的な実行時の動作は、プロパティオブザーバー、コアデータ、アスペクト指向プログラミング、高次メッセージング、分析およびロギングフレームワークなどの機能の中心に位置しています。
Objective-Cのメソッド呼び出しスタイルを使用すると、メソッド呼び出しに約20のマシンコードオペランドが追加されるため、特定の状況(小さなボディを持つメソッドへの多くの厳密な呼び出し)では、C ++スタイルの静的およびvtableディスパッチのパフォーマンスが向上します。
しかし、一般的な95-5ルール(パフォーマンス向上の95%はコードの5%のチューニングから得られる)を考えると、強力な動的機能から始めて、必要に応じて強化することは理にかなっていますか?