問題タブ [nsinvocation]
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.
iphone - NSInvocation が例外をスローする
呼び出しで NSTimer を使用しようとしていますが、2 つの問題があります。Selector に Arguments を渡す方法 (Xcode crys) を取得する方法、または常にクラッシュするため、一般的に動作させる方法がわかりません。
しかし、私はそれを機能させません(実行中の例外)誰かが何が悪いのか知っていますか?
ios - NSInvocationは自分自身を2次元のインデックス引数として渡す必要がありますか?
私は開発にcocos2dを使用しています。カスタマイズされたボタンクラスをラップしようとしました。ボタンに割り当てたセレクターに応答させるために、NSInvocationを使用しました。その中で、MyButtonはこのように機能します。
私はselに次のような関数を渡しました:
[invocation_ setArgument:&self atIndex:2];
私の質問は、MyButtonの実装にこの行を追加する必要があるかどうかです。
私がこの質問をしているのは、ここのiosドキュメントによると: NSInvocationクラスリファレンス
それはそれに対処しました:
インデックス0と1は、それぞれ非表示の引数selfと_cmdを示します。これらの値は、setTarget:メソッドとsetSelector:メソッドを使用して直接設定する必要があります。メッセージで通常渡される引数には、インデックス2以上を使用します。
setTargetを呼び出すときにselfが渡されたようですが、setArgumentメソッドで&self引数を渡す必要がないということですか?
ありがとう
objective-c - NSInvocation getReturnValue:forwardInvocation内で呼び出されます:返されたオブジェクトをdeallocで呼び出します:
test.m
これは、動作をテストするために使用しているスタンドアロンファイルです。
コンパイルするには:clang test.m -o test.app -fobjc-arc -ObjC -framework Foundation
。Xcodeコマンドラインツールがインストールされていることを確認してください。
コメントアウトする[invocation getReturnValue:&result];
と、返されたオブジェクトは評価されませんdealloc
。これがバグなのか、それとも私がどのように機能するのか誤解しているだけなのかはわかりませんNSInvocation
。
iphone - NSInvocationまたはNSNotificationCentreまたはDelegateメソッドからどちらを使用するのが良いですか
プロジェクト全体で、あるクラスから別のクラスにデータを流すために使用するのに適しているのはどれですか?
NSInvocation
NSNotificationCentre
delegate
メソッド
または私が知らない他の方法で??
automatic-ref-counting - ARC [リライター] NSInvocation の setArgument は、__unsafe_unretained 以外の所有権を持つオブジェクトで使用するのは安全ではありません
プロジェクトを ARC に変換しようとしましたが、このエラーが発生しました。
&object,&invocation と &callerToRetain で、「[rewriter] NSInvocation's setArgument is not safe to be used with an object with Ownership without __unsafe_unretained」というエラーが表示される
私を助けてください。
button - cocos2dのカスタムボタン
カスタム「ボタン」クラスの作成に取り組んでいました...ボタンに柔軟性が必要なため、CCMenuItemsを使用していません。
私の実装は次のとおりです。
作成されると、ボタンは と を受け取り、target
をselector
構築しNSInvocation
ます。触れると、呼び出しが呼び出されます。このボタンは、主にあるレイヤーから別のレイヤーに移動するために使用します。
問題は、レイヤーから次のレイヤーに移動してから前のレイヤーに戻るときに、次のビューにスプライトがロードされないか、EXC_BAD_ACCESS エラーがスローされるという奇妙なことが発生することです。
誰でもこれで私を助けることができますか?
ありがとう!
PS: 私の理論では、NSInvocation と「dealloc」メソッドに関係しているということです。
私は何か間違ったことをしていますか?
ios - NSInvocationOperation から返された結果を取得する
呼び出しまたはメソッドの結果を返します。- (id)result 戻り値 メソッドによって返されるオブジェクト、またはオブジェクトでない場合は戻り値を含む NSValue オブジェクト。メソッドまたは呼び出しの実行が終了していない場合、このメソッドは nil を返します。
私はいつもnil
イメージをつかみます。上記のコードの何が問題になっていますか?
ios - NSInvocationOperation コールバックが早すぎます
同様の質問が何度か寄せられていることは知っていますが、この特定の問題を解決する方法を理解するのに苦労しています。これまでのところ、私が行ったことはすべてメイントレッドで実行されています。しばらく時間がかかる操作を実行する必要があることがわかりました。操作中に HUD をディスプレイに追加し、操作が完了するとフェードアウトしたいと考えています。
GCD について多くのことを読んだ (そしてかなり混乱した) 後、最も簡単な方法は、時間のかかるメソッドを NSInvocationOperation で呼び出し、それを新しく作成した NSOperationQueue に追加することであると判断しました。これは私が持っているものです:
これにより、HUD が表示され、マップ上にドットの描画が開始され、その操作が完了すると、HUD がフェードアウトすると予想されます。
代わりに、HUD を表示し、マップ上にドットの描画を開始し、ドットを描画しながら HUD の方向にフェードアウトします。私の NSLogs によると、HUD をフェードするメソッドを呼び出す前に約 4 分の 1 秒の遅延があります。その間、ドットの描画はさらに数秒間続きます。
HUD をフェードアウトする前にマップの描画が完了するまで待機させるにはどうすればよいですか?
ありがとう
追加するために編集:
次の変更を加えた後、ほとんど成功しています。
奇妙なことに、最初に timeConsumingOperation を呼び出し、次に showLoadingConfirmation、次に fadeConfirmation を呼び出しているようです。これは、これらのメソッド内で起動される私の NSLogs によるものです。
画面に表示される動作は次のとおりです。ドットが描画され、それに応じてマップがズームを調整し (timeConsumingOperation の一部)、HUD が画面に表示され、その後何も表示されません。timeConsumingOperation が完了するまで showLoadingConfirmation は発生せず、fadeConfirmation はまったく発生していないように見えますが、3 つの NSLog はすべて即座に表示されます。
これは非常に奇妙に思えますが、timeConsumingOperation の完了時に何かを発生させる方法があることを示唆しているようにも見えます。
これを追加してみました:
そしてこれも:
しかし、それらは何の違いもないようです。
xcode - NSInvocation の問題
そのため、ファイルから情報をロードしようとすると、いくつかの問題が発生します。
これは私にNSinvocationの問題を与える行です
* NSInvocation: 警告: クラス 'myClass' のオブジェクト 0xf9f500 は methodSignatureForSelector を実装していません: -- この先のトラブル
* NSInvocation: 警告: クラス 'myClass' のオブジェクト 0xf9f500 は doesNotRecognizeSelector を実装していません: -- 中止
他の質問や他のサイトを調べて、答えを見つけようとしました.myClassはNSObjectから継承し、顧客のView ControllerはUIViewControllerから継承します. 私のカスタマービューコントローラーは上記のコードを実装しています。ロード元の保存ファイルは存在します。このために何をする必要があるかわからないので、助けていただければ幸いです。
objective-c - NSInvocation setArgument の問題
メソッドを動的に呼び出すには、NSInvocation を使用する必要があります。ここで私が試したこと:
messageRecord.senderController
はメソッドが呼び出されるオブジェクトであり、messageRecord.receiverAction
このコードに指定されたセレクターであることに言及する必要があります。また、message.data
タイプ (NSArray *) のオブジェクトであり、適切に初期化されています。
このコードでは、次のコンパイル時エラーが発生します
呼び出しプロセスを次のように変更すると、期待どおりに動作します。
2 つの唯一の違いは、ローカル NSArray ポインターを作成し、それに message.data を割り当てたことです。message.data
後で、それ自体ではなく、新しく作成されたポインターのアドレスを指定しました。
なぜそれが機能したのですか?とにかく違いは何ですか?