問題タブ [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.
objective-c - 2つのパラメーターを使用してメインスレッドでセレクターを実行する良い方法はありますか?
2つのパラメーターを使用してメインスレッドでセレクターを実行するための優れた方法を探しています
私は本当に使うのが好きです
メソッド、ただし今は2つのパラメーターがあります。
つまり、基本的に、画像が読み込まれたときに通知する必要のあるデリゲートがあります。
ただし、これを行うメソッドはバックグラウンドスレッドで呼び出される可能性があり、デリゲートはこの画像を使用してUIを更新するため、これはメインスレッドで行う必要があります。ですから、メインスレッドでもデリゲートに通知してもらいたいのです。
したがって、1つのオプションが表示されます。辞書を作成できます。この方法では、渡す必要のある2つのパラメーターを含むオブジェクトが1つだけあります。
しかし、このアプローチは私には正しくないようです。これを行うためのよりエレガントな方法はありますか?おそらくNSInvocationを使用していますか?前もって感謝します。
cocoa - NSInvocationとARC(自動参照カウント)
現在のコードをARCに移行しようとすると、NSInvocation引数としてNSStringを渡すたびにエラーが発生します。
例:
[編集]メニューから[リファクタリング]->[Objective-CARCに変換]オプションを使用すると、エラーが発生します。テキストは「NSInvocationのsetArgumentは、__unsafe_retained以外の所有権を持つオブジェクトで使用するのは安全ではありません。」です。
どうすればこれを回避できますか?
objective-c - 現在のメソッドのNSInvocationのgetArgumentは常にnullを返します
現在のインスタンスに存在しない場合にファイルシステムからそのオブジェクトをロードする準備ができるように、現在の関数の引数の名前を取得したいと思います。(たとえば、[foo dictTest]が利用できない場合は、以前に保存したplistバージョンを正確にそのivarにロードしたい)
現在の関数の引数として指定したivar名を指定してファイルを検索したいと思います。
これは機能コードです:
コードがNSLogに到達するとすぐに、firstArgumentからnull値を取得します。
何故ですか?現在のメソッドが完全に呼び出されるのを待たなければならない可能性がありますか、それともsetArgumentで指定されたivar名を使用する呼び出しを介してクラスメソッドを暗黙的に呼び出すプロキシ関数を作成する方が実際には良いでしょう。その引数文字列を好きなように使用できますか?
よろしくお願いします!
PS:この特定の例では、KVCを使用してivarを識別して返すことはしたくありません。
iphone - NSInvocationはC配列をObjective-Cメソッドに渡します
遅れてC配列をObjective-Cのメソッドに渡したい。通常、Selector:withObject:afterDelayを実行できますが、配列を変更したり、NSMutableArrays、NSDictionaries、またはその他のCocoaオブジェクトに変換したりすることはできません。C配列である必要があります。StackOverflowとGoogleに関する私の調査では、Cプリミティブを渡す1つの方法は、それらをNSInvocationでラップすることであることがわかりました。以下のコードでこれを実行し、渡される配列へのポインターとして引数を設定してみました。
以下の方法で渡された配列からいくつかの値を出力しようとすると、テストアプリがクラッシュし続けます。私はおそらく完全に明白な何かを見逃しているだけです。誰かがここに光を当ててくれませんか?
objective-c - NSOperationを使用した非同期NSURLConnection
応答に多くのデータがあるため、バックグラウンドモードで実行したいと思いNSURLConnection
ます。フォーラムでは、で使用するためにAppleの有限長コーディングを使用するように指示されていますdidEnterBackground
。しかし、私はそれを避けたいと思います。その代わりに、次のコードをNSOperation
asNSInvocation
で使用しますが、機能していません。connectToServer
操作中ですNSURLConnection
。助けてください。didReceiveData
、didReceiveResponse
デリゲートメソッドは呼び出されませんか?
objective-c - NSInvocationを使用したNSOperation内の非同期NSURLConnection?
NSOPeration内でバックグラウンドモードの非同期NSURLConnectionを使用する必要があります。これは、応答に大きなデータがあるためです。didEnterBackgroundで使用するAppleの有限長コーディングを回避する必要があります。代わりに、NSInvocationを使用してNSOperationを介して次のコードを使用しますが、機能しません。 connectToServerはNSURLConnection操作を行っています。助けてください?didReceiveData、didReceiveResponseデリゲートメソッドが呼び出されていませんか?
}
}
objective-c - malloc'd void* を返した後に遅延解放するために NSOperationQueue を使用する
を使用NSInvocation
していくつかのメソッドの戻り値を取得していますが、残念ながらリークがあるようですが、void*
から返された後、割り当てている を解放する方法がわかりませんNSInvocation
。
次の実装では、次の実行ループで実行されるブロックで解放しようとしましたが、returnBuffer
割り当てられていないためにクラッシュします。
ブロックを解放できないのはなぜですか?returnBuffer
また、割り当てられていない場合、ブロックが通過するのはなぜreturnBuffer!=NULL
ですか?
これはIMP
スウィズリングに関係する特別なメソッドなので、メソッドの戻り値の型はわかりません。入れNSData
たりとかしたらダメ。
ANSWER
Joshの-[NSMutableData mutableBytes]
トリック
objective-c - セレクター名をメソッドパラメーターとして渡す
私は、よく使用され、いくつかのボタンを返すカスタム ヘルパー メソッドを作成しています。各ボタンはもちろん、押されたときに独自のターゲット セレクターを持ちます。返されるボタンに指定されたセレクターが含まれるように、セレクターをパラメーターとしてこのメソッドに渡したいと思います。
しかし、セレクターをメソッドパラメーターとして渡す方法がわかりません。このようなもの:
whereselectedFunction
はメソッドに渡されるパラメーターです。
WhatClass?*
NSString と SELを作成しようとしましたが、結果は次のようになりました。
[NSInvocation invocationWithMethodSignature:]: メソッド署名の引数を nil にすることはできません
objective-c - NSInvocation とブロックの違いは何ですか?
ブロックと言うときは、次のことを意味します。
また、ブロックはiOS4以上でのみサポートされています。
これら2つの違いは何ですか?