問題タブ [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 に答える
329 参照

llvm - LLVM C ++ APIを介してObjective-Cブロックを呼び出す方法は?

たとえば、次のようなものを含むObjective-Cコンパイル済みモジュールがあるとします。

returnABlock()...次に、LLVM C ++ APIを使用して、そのモジュールをロードし、関数を呼び出すためのCallInstを作成します。

returnABlockCall次に、オブジェクトを介して返されたブロックを呼び出すにはどうすればよいですか?

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

iphone - 到達可能性の問題Appleクラス

UITabBarを使用するアプリがあり、インターネットからコンテンツをダウンロードする必要があるため、Reachabilityクラスを使用することにしました。それを起動すると、メソッドは大いに機能しますが、すべてのジョブが完了するのを待たずに別のtabBarインデックスに移動すると、最初のインデックスに戻り、アプリは保持されて移動しません。ここにいくつかのコードがあります:

私はあなたが必要とするかもしれない他のすべてを貼り付けます。

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

iphone - ブロックが一部のオブジェクトを保持していません

ブロックのドキュメントから:

参照カウント環境では、ブロック内で Objective-C オブジェクトを参照すると、デフォルトで保持されます。これは、オブジェクトのインスタンス変数を参照するだけの場合でも当てはまります。

作業が実行される前にブロックがオブジェクトに与えられ、作業が実行された後にブロックがレシーバーによって実行される完了ハンドラーパターンを実装しようとしています。私は良いメモリ市民であるため、ブロックは完了ハンドラーで参照するオブジェクトを所有する必要があり、ブロックがスコープ外になると解放されます。copyブロックは、それが宣言されたスタック スコープを通過しても存続するため、ブロックをヒープに移動する必要があることは十分にわかっています。

ただし、オブジェクトの 1 つが予期せず割り当て解除されています。いくつか遊んだ後、ブロックがヒープにコピーされたときに特定のオブジェクトが保持されていないように見えますが、他のオブジェクトは保持されています。何が間違っているのかわかりません。私が作成できる最小のテストケースは次のとおりです。

いくつかのメソッドの範囲内:

ある時点で両方のオブジェクトがブロックによって保持されることを期待しており、それらの保持カウントが同じであることは確かです。代わりに、次の出力が得られます。

o( のサブクラスNSObject) は適切に保持されており、範囲外にはなりません。ただしmailViewController、保持されず、ブロックが実行される前に割り当てが解除されるため、クラッシュが発生します。

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

iphone - iOSでブロックを理解しようとしています

iOSでブロックを使用する方法を理解しようとしています。私はAppleのドキュメントを読みましたが、いつものように、それらは曖昧で不完全であり、いくつかの重要な情報は言及されていません。私も成功せずにググった。これは私がそれを理解するための練習としてやろうとしていることです。

文字列を読み取り、その文字列を前回の読み取りと比較するためのブロックを作成しました。文字列が同じでない場合はYESを返し、同じ場合はNOを返します。

これは私がした方法です:

私はこれを.hで宣言しました

これを.mで、viewControllerのviewDidLoad内で宣言しました

これが私が使用する方法です:私はこれを行うスレッドを持っています:

これらは私が持っている問題です:

  1. ブロックは常にYESを返します(文字列は異なります)
  2. これをvideDidLoad内で宣言するのは気が進まない。これをメソッドとしてグローバルに使用できるように、どのように宣言する必要がありますか?メソッドの場合と同じようにこれを配置する必要がありますか?
  3. ブロック内でメソッド「getString」を呼び出しています。大丈夫ですか?
  4. .mでブロック変数を宣言するのは奇妙だと思います。ご覧のとおり、ブロック変数を.hで宣言してから、.mで使用する必要があります。私はそれをやろうとしましたが、エラーが発生しました。
  5. ブロックの最初の行にデバッグポイントを設定しましたが、そこで停止していません。
  6. ブロック内のNSlog行は何も出力しません。ブロックが呼び出されていませんか?

皆さん、これを手伝ってくれませんか?

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

iphone - init でブロックを宣言しても安全ですか?

ブロックを取る関数を呼び出す必要があります。init メソッド内で行うと問題が発生しますか?

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

iphone - Objective C ブロック内からセレクターを実行する

Python や Haskell などの言語でクロージャを使用するのが本当に好きだったので、初めて目的の c ブロックを使用しようとしました。

問題が発生しましたが、誰かが助けてくれることを願っています。

以下は、私が抱えている問題の最も単純なバージョンです。

したがって、私を驚かせないメモリ管理の問題のように見えますが、解決策を確認する知識がありません。おそらく私がしようとしていることは不可能かもしれません。

他の人がどう思うか興味があります:)

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

iphone - iphone-ブロックが期待どおりに機能しない

学習のために、ブロックとして書き込もうとしているコードがあります。

NSDictionaryオブジェクトのコレクションであるこのNSMutableArrayがあります。各ディクショナリ内には、キー「time」に関連付けられたNSStringオブジェクトがあります。その辞書に特定の時間が存在するかどうかを調べようとしています。ブロックを使用していなかった場合は、次のようにします。

ブロックを使用して...

しかし、これは何も設立していません。すべての「aValue」はゼロになり、すべての[obj objectForKey:@"time"]は空の文字列になります。

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

iphone - アプリで iOS 4 の新機能を使用する必要がありますか? なぜ?

アプリの 1 つを更新していますが、ジレンマがあります。

iOS 4 独自の機能を追加したい場所では、サポートされているデバイスにのみ実装するしかありませんでした。ここではジレンマはありません。

ジレンマは、同じ効果を得るために「古い方法」と「新しい方法」の 2 つの方法がある場合です。良い例は、アニメーションにブロックを使用することです。次の構文を使用できます。

iOS 4.0 でのみサポートされます。または、4 を含むすべてのバージョンでサポートされる古い方法を使用します。 (他にも多くの同様の例があります。)

あなたは何をしますか、そしてその理由は何ですか?

ブロックは本当に素晴らしいですが、以前のバージョンをサポートしたい場合は、さらにコードを書かなければなりませんか? そのような状況でそれらを使用して何を得ることができますか?

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

objective-c - LinuxのコンパイラはObjective-Cブロックをサポートしていますか?

Linuxで次のコードをコンパイルするにはどうすればよいですか?Ubuntu 10.10(Maverick Meerkat)を使用します。

私は試した:

そして得た:

この作業を行う方法についてのガイダンスをいただければ幸いです。フィードバックに基づいて編集された質問、ありがとう。

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

objective-c - objcブロックの割り当てが「割り当て」ではなく「コピー」である必要があるのはなぜですか?

私はObjective-Cでブロックを使用し始めていますが、ブロックをインスタンス変数に割り当てる場合、ブロックを割り当てる必要があるのはなぜcopyですかassign

例えば: