問題タブ [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 - NSInvocation getArgument:atIndex: OCMock でブロックをテストする際の混乱
Facebook SDK ラッパーに単体テストを書いていますが、- (void)getArgument:(void *)buffer atIndex:(NSInteger)indexOCMock で FBRequest をモックしようとしているときに、NSInvocation について混乱してしまいました。
これが私がテストしようとしているメソッド定義です。
FacebookHelperCompletionHandler は、次のように typedef です。
これが私のテスト方法です
NSInvocation メソッドでインデックスとして 3 を渡すと、インデックス 3 が範囲外であるというエラーが表示されます。しかし、ドキュメントには、インデックス 0 は自己、1 は _cmd であると記載されているため、installedOnly は 2 で、completedHandler は 3 である必要があると考えています。これらのインデックスが正しく機能しない理由を理解したいだけです (おそらくプリミティブ型の何か?)
編集:もちろん、私は愚かです...- (FBRequestConnection*)startWithCompletionHandler:(FBRequestHandler)handlerハンドラーがインデックス2にあるFBRequestのメソッドをモックしていました。将来誰かがOCMockでブロックスタブを必要とする場合に備えて、質問を残しています。`
ios - アプリに NSZombie が見つかりました...次はどうしますか?
実際には列挙型であるいくつかの「整数 32」属性を持つ NSManagedObject のサブクラスがあります。これらの列挙型は、モデルの .h ファイルで次のように定義されています。
このカスタム オブジェクトの各属性の値を表示するテーブル ビューを表示する必要があるため、列挙型ごとに、次のような文字列値を返すメソッドを用意します。
テーブル ビューでは、 my の属性を反復処理します(NSManagedObjectを使用し、属性ごとに、適切な "stringsFor" メソッドを呼び出すヘルパー メソッドを呼び出して、その特定の属性の文字列を返します。NSEntityDescriptionattributesByName
私のテーブルビューは次のcellForRowAtIndexPathようになります。
属性の 1 つだけについて、NSInvocationの戻り配列でクラッシュが発生し続けます。
Zombies Profiler を使用すると、次のように表示されます。

ARCを使用しています。これをさらにデバッグするにはどうすればよいですか?
iphone - NSMethodSignature を必要とする NSInvocation
NSInvocationが必要かどうかを数日間考えていましたNSMethodSignature。独自の NSInvocation を書きたいとしましょう。私の要件は次のようになります。
- セレクターが欲しい
SEL - セレクターを呼び出すターゲット オブジェクト
- 引数配列
次にIMP、ターゲットと から outを取得し、パラメータとしてSEL渡しargumentます。
それで、私の質問は、なぜNSMethodSignatureを構築して使用するのにが必要なのNSInvocationですか?
SEL注: aと targetしかないので、このメソッドの引数と戻り値の型がないことはわかっていますが、なぜ引数と戻り値の型を気にするのでしょうか?
ios - NSTimer + NSInvocation が iOS 7 でクラッシュを引き起こす
iOS 7 で使用するとクラッシュし+[NSTimer scheduledTimerWithTimeInterval:invocation:repeats]ます。コードは簡単です。ここにコピーペースト(変数の名前を変更したもの)全体があります。
タイマーが起動すると、次のスタック トレースでアプリがクラッシュします。

変数の 1 つが保持されなくなったのではないかと考えたので (NSTimer のドキュメントには、参照されたすべてのパラメーターが保持されると記載されていますが)、すべての変数を に強く保持しましたself。残念ながら、クラッシュは続きます。
前もって感謝します!