問題タブ [message-forwarding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
212 参照

ios - iOS メッセージ転送 - CLASS メソッドをネゴシエートして転送する

クラスメソッドを別のインスタンスに転送できるかどうか疑問に思っています。私はドキュメントを見てきましたが、そこに示されているすべてのメソッドはインスタンスレベルのメソッドです。クラスまたは静的メソッドをネゴシエートして転送する方法はありますか?

もう少し情報を得るために、私が持っているビジョンは、私が直接呼びかけたいことをするのではなく、することです[ASingleton sharedInstance] somemethod]someMethodASingleton

0 投票する
1 に答える
271 参照

ios - ARC で NSInvocation からオブジェクト配列引数を取得する

次のシグネチャを持つメソッドがあります。

いくつか質問がありました:

1. このメソッドで NSInvocation を使用して引数を取得するにはどうすればよいですか?

次のことを試しましたが、正しい値が得られません。

n 個の int オブジェクトの配列を持つことができるので、ハードコードするべきではありません 2. 実行時にオブジェクト配列のサイズを決定するにはどうすればよいですか? 境界を決定するために、配列にセンチネル値が必要ですか?

2. __strong 修飾子は、入力パラメーターとブロック パラメーターの両方に対して正しいですか? ブロックは非同期であり、後で実行されることに注意してください。

0 投票する
2 に答える
1365 参照

ios - iOS メッセージ転送メソッドSignatureForSelector

だから私はメッセージ転送を調べていくつかの単体テストを実行しています.Apple独自のブランドのドキュメントを含むいくつかの乏しいリソースに出くわしました。forwardInvocation:methodSignatureForSelector:

methodSignatureForSelector:メッセージを転送しようとしているオブジェクトに一致するメソッド名とパラメーターがあるかどうかを確認するために必要な一般的なアイデアが得られたので、私の質問を呼び出すことができforwardInvocation:ますmethodSignatureForSelector:それで...

私には、これは「継承したクラスのいずれにもこのメソッドを処理する方法がない場合は、代理オブジェクトが処理する方法があるかどうかを確認してください」と言っているように見えます。

りんごが示す例は、交渉の方法に関しては、外交官の代わりに戦士が行動することです。この例を考えると、戦士またはその親のいずれかが転送先の適切なメソッド署名を持っているかどうかを確認する理由がわかりません。だから、これは私が考えられない別の理由でそこにあると私に信じさせます.

TL;DR なぜ必要なの[super methodSignatureForSelector:selector];ですか?

0 投票する
2 に答える
104 参照

ios - 配列のオブジェクトへのメソッド転送が必要なクラスがあります

タイトルが言ったように: 私は ObjcClass を持って -(void)test1:xxx -(void)test2:xxx argu:yyy います。

例:

このように ,UIApplicationDelegate にはいくつかのメソッドがあります ,書きたくない [obj application:application didFinishLaunchingWithOptions:launchOptions]; または[obj applicationWillResignActive:application]; どのメソッドでも、逆に [obj RespondsToSelector:_cmd] のようなメソッド、[obj invokeWithMethod:_cmd arguments:_VA_LIST] のような一般的なメソッドとして提案できることを願ってますこれらのメソッドは異なるメソッドに対して同じことを行うため、最適化できるかどうか

0 投票する
0 に答える
62 参照

objective-c - 転送時に ObjC メソッドへの真のレスポンダーを取得する

UITableView/UICollectionViewデリゲートがプロキシ オブジェクト ( ではなくNSProxy、通常のオブジェクト)によって転送されているケースに遭遇しました。

特定のデリゲート メソッドに応じて、プロキシはそれを実際にメソッドに応答する 2 つのオブジェクトのいずれかに転送します。

デリゲート コールバックが与えられた場合、メソッド呼び出しに応答している「真の」インスタンスを知りたいです。

プロキシ コードは次のようになります。

私のコードは次のようになります:

デリゲート メソッドが与えられた場合、どのインスタンスが応答しているかを知りたい:

編集:

現在のハック (より全体的なものが欲しい):

モック オブジェクトでフォワーダーを呼び出し、ターゲット オブジェクトを取得する