0

UIWebView 内の JavaScript からアプリケーションのネイティブ部分への呼び出しを行うための抽象化レイヤーに取り組んでいます。

そのためには、JavaScript 関数呼び出しをオブジェクトへの Objective-C メッセージに変換する汎用メカニズムが必要です。これは、ブロック引数を必要とする Objective-C オブジェクトでメソッドを呼び出すことを除いて、すでにかなりうまく機能しています。

ブロック引数として NULL を渡すことなく、一般的な方法でそのようなメソッドを呼び出すにはどうすればよいですか。渡されたすべての引数 (可変引数) を反復処理できるジェネリック ブロックを渡したいと思います。

言い換えると、これらのブロックの特定のタイプ (つまり、署名の違い) に関係なく、Block-Parameters を使用して任意のメソッドを一般的に呼び出す方法はありますか?

4

1 に答える 1

0

あなたがしていることを正確に試したことはありませんが、残念ながら「いいえ」と言うには十分だと思います.

ここでは、いくつかの問題があなたに対して団結しています。

  • ブロックは単なるブロックであり、ブロックから関数ポインターを取得する標準的な方法はありません (実行できますが、移植可能または将来性のある方法ではできません)。
  • 関数ポインターがあったとしても、プラットフォーム固有のアセンブリを使用しないと、実行時に決定されるいくつかの引数でそれを呼び出すことはできませんでした。これに対する C の唯一のサポートは usingva_argsです。

(これについて私が間違っていて、誰かが私を訂正してくれることを願っていますが、残念ながらそうではありません。)

于 2011-08-25T08:47:33.337 に答える