私はLuaをObjective-Cでインターフェイスしようとしていますが、NSSelectorFromString()
の文字列変換にはあまりにも大きなオーバーヘッドがあると思います。なぜなら、Luaはすべての文字列を内部化するためです。Objective-CでSELを何かへのポインタとして想定して処理できますか?
私はLuaでセレクタを表現するためのより軽量な方法を探しています。 Objective-Cのセレクタは、抽象化のタイプですが、それが何かへのポインタとして定義されています:
typedef struct objc_selector *SEL;
は、だから、通常のポインタとして扱うことは安全に見えるので、私はlightuserdata
でのLuaにそれを渡すことができます。いいですか?
C文字列を使用すると便利でしょうか? NSSelectorFromString()の代わりに 'sel_registerName()'を使うことができ、前者はCの文字列引数を受け取ります。それ以外の場合、Objective-CコードからLua/Cコードにセレクタを受け取っている場合は、 'SEL'を' void * 'として扱うことができます。 –
面白いことに、SELは既にCの文字列へのポインタです...それを使用することを奨励したいとは思いません。 – JustSid
SELはC文字列へのポインタですが、これは推奨されない実装の詳細です。 – Lothar