問題タブ [objective-c-blocks]

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 投票する
2 に答える
9814 参照

objective-c - Objective-Cブロックをインラインで書く方法は?

Objective-cブロックを使用してバイナリ検索を実装しようとしています。関数を使用していますindexOfObject:inSortedRange:options:usingComparator:。これが例です。

前述の関数で外部で定義されたobjective-cブロックをどのように使用できるのでしょうか。これが2つの比較関数です。

これらは、にある次の宣言を参照して記述されていますNSObjCRuntime.h

0 投票する
6 に答える
39273 参照

iphone - performSelector:withObject:afterDelay の代わりのブロック:

数マイクロ秒後にコードを実行したいことがよくあります。今、私は次のようにそれを解決します:

この:

動作しますが、毎回新しいメソッドを作成する必要があります。これの代わりにブロックを使用することは可能ですか? 基本的に私は次のような方法を探しています:

それは私にとって本当に役に立ちます。

0 投票する
3 に答える
7189 参照

iphone - UIView ブロックベースのアニメーションの繰り返し回数

ブロック ベースのアニメーションのメソッドを調べたところ、同等のパラメータやオプションがないことに気付きました[UIView setAnimationRepeatCount:]

アニメーションを一定回数繰り返す最も簡単な方法は何ですか? たとえば、完了ブロックを使用してチェーンしますか?

0 投票する
3 に答える
40757 参照

objective-c - Objective-Cのプロパティにブロックを保存する方法は?

後で使用できるように、objective-cブロックをプロパティに保存したいと思います。どうすればいいのかわからなかったので少しググってみましたが、この件についての情報はほとんどありません。しかし、私は最終的に解決策を見つけることができ、私のような他の初心者のために共有する価値があるかもしれないと思いました。

当初、Block_copyとBlock_releaseを使用するには、プロパティを手動で作成する必要があると考えていました。

幸い、ブロックはNSObjectsであり、- copy/は/- releaseと同等であることがわかりました。だから私はセッターとゲッターを自動生成するために使用することができます。Block_copyBlock_release@property (copy)

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

objective-c - ブロック内にオブジェクトを作成する

ブロック内からオブジェクトを作成しても大丈夫ですか?

0 投票する
3 に答える
22079 参照

iphone - NSComparisonResultとNSComparator-それらは何ですか?

NSComparisonResultとは何NSComparatorですか?

タイプ定義の1つ、次のようなものを見てきました。

関数ポインタと何か違いはありますか?

^また、記号の意味すら推測できません。

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

objective-c - Grand Central Dispatch - スレッド間でのデータの受け渡し

バックグラウンドでプロセスを実行して文字列を生成しようとしています。文字列はメイン スレッドで使用されます (リモート サーバーに送信されます)。コードはシミュレーターで正常に動作し、文字列は期待どおりに 2 回ログに記録されます。

デバイス (iPad、4.2、およびさまざまな iPhone) では、毎回 EXC_BAD_ACCESS でクラッシュします。myString は範囲外のようですが、これはウィキペディアの同じ原則が使用されている例に反しているようです。

コードは次のとおりです。

これがクラッシュする理由と、それを修正する最善の方法を知っている人はいますか?


質問を明確にするためにコードを単純化するという間違いを犯しました。

メイン キューで、実際に別の呼び出しで自分自身にメッセージを送ると、これが不正なアクセスの原因になります。

解決策は、非同期キューでメソッドを呼び出し、メソッド内でコードを dispatch_async(dispatch_get_main_queue(), ^{}); でラップすることでした。ブロック。

うまくいけば、これは他の誰かを助けるでしょう。

0 投票する
20 に答える
374442 参照

ios - -performSelector:withObject:afterDelay:のように、遅延後にブロックをトリガーするにはどうすればよいですか?

を使用するのと同じように、遅延後にプリミティブパラメータを使用してブロックを呼び出す方法はありますが、 //のperformSelector:withObject:afterDelay:ような引数を使用しますか?intdoublefloat

0 投票する
4 に答える
15366 参照

objective-c - nil / NULLブロックを実行するとバスエラーが発生するのはなぜですか?

私はブロックをたくさん使い始めましたが、すぐにnilブロックがバスエラーを引き起こすことに気づきました。

これは、nilオブジェクトへのメッセージを無視するObjective-Cの通常の動作に反しているようです。

したがって、ブロックを使用する前に、通常のnilチェックに頼る必要があります。

または、ダミーブロックを使用します。

別のオプションはありますか?nilブロックが単なるnopになれない理由はありますか?

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

objective-c - ブロックをクラスのメンバーとして定義することはできますか?

継承によって定義されるのではなく、インラインで戦略を定義できるようにする、Objective-C で非常に単純な戦略クラスを実装しようとしています。現在、私のコードは次のようになっています。

これでうまくいくと思ったのですが、エラーが発生しました

「(」トークンの前に指定子修飾子リストが必要です

これを機能させる方法はありますか?