問題タブ [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.
iphone - ブロックとコアモーションでクラッシュ
加速度センサーの更新に Core Motion のプッシュ ハンドラーを使用しています。
このコードはクラッシュします。ブロックをまったくコピーしないと、一時停止/再開時に断続的にクラッシュします。外すと正常にautorelease
動作しますが、漏れが発生すると思います。
また、ブロックをivarに割り当て、後に解放しようとしました[motionManager stopAccelerometerUpdates]
。同様にクラッシュします。
どうして?copy
/retain
と / のrelease
バランスを取る必要があるといつも思っていましたautorelease
。
objective-c - ブロックメモリ管理
この Apple リファレンスには、objective-c のブロック オブジェクトの概念的な概要があります。
http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Blocks/Blocks.pdf
しかし、それは私に関係があり、他の人に関係する可能性のある 2 つのトピックを実際には説明していません。最初の質問は次のようなものです: ブロック参照に nil を代入できますか? または、NULL を使用する必要がありますか? または、どちらも使用できませんか?
2 番目の問題は、メモリ管理の領域にあります。たとえば、スタック上にブロック オブジェクトを作成するメソッドを宣言しました。
このオブジェクトは、あるスコープ内で作成され、スコープ外に出ると破棄されます。しかし、TheClass オブジェクトは実際には、この (ほとんど破棄された) ブロックへの参照を格納しようとしています。
このようなブロックのクラス プロパティを宣言するにはどうすればよいですか? これら2つの違いは何ですか:
?
Apple のドキュメントでは、ブロック コピーはブロックをヒープに移動すると明確に述べられています。しかし、そのままにしておくとどうなるでしょうか。makeTheClass
メソッドのスコープ外に出た後、破棄されますか?
objective-c - iOS で実行時にブロックが利用可能かどうかを確認する
実行時にブロックの可用性をテストする必要があるため、iOS 3 との下位互換性を処理できます。何かヒントはありますか?
編集:これまでのところ、私はやっています うまくいっているif (!NSClassFromString(@"NSBlockOperation")) {...}
ようです...
iphone - CoreData を使用したグランド セントラル ディスパッチ (GCD)
アプリケーションで Grand Central Dispatch (GCD) を使用して、重い作業を行っています。アプリケーションは、データ ストレージの目的で Core-Data を使用しています。これが私のシナリオです(関連する質問とともに):
の結果として[self saveManagedObjectContext]
、fetchResultsController
デリゲート メソッドが自動的に呼び出されます。その結果、UI 更新ロジックが開始されます。
今私の質問は、main_queue
forを使用する必要があり-saveManagedObjectContext
ますか? ですべての操作を実行する必要がNSManagedObject
ありmain_queue
ますか? を更新する一部の操作には、NSManagedObject
2 ~ 3 秒かかる場合があります。お知らせ下さい。
iphone - グランドセントラルディスパッチ(GCD)と非同期API
TwitterAPIを使用してツイートを投稿しています。時間がかかる場合があるので、バックグラウンドで「ツイート投稿」操作を実行したいと思います。そのために私は次のようにGCDを使用しています:
問題は、デリゲートコールバックを取得していないことです。私は何が欠けていますか?
objective-c - iOS 4 - ブロックをクラスのメンバーとして使用する
クラスのメンバーとして使用されるブロックの構文を誰かが理解するのを手伝ってくれることを望んでいました. 実際に問題なく動作するコードがいくつかあります。
typedef
これは機能しますが、ステートメントの構文を理解したいと思います。実際に typedef を使用する必要があるかどうか。
私が読んだことによるとtypedef
、コードがより明確になるため、この状況での使用が推奨されます。しかし、なしでこれを行おうとすると、まったくコンパイルできませんでしたtypedef
。typedef についての私の理解では、構文は基本的に次のとおりでした。
そのような:
しかし、私のtypedef
ステートメントの構文はこれと一致しません。だから私の質問は:
- ステートメントの構文が
typedef
他のステートメントとどのように異なるのtypedef
でしょうか / 私が使用している構文は実際にコンパイラーにとって何を意味するのでしょうか? - を使用せずにブロックをクラスのメンバーとして持つことは可能
typedef
ですか?
objective-c - ブロックとスレッド
c / cocoaのブロックがメインスレッドとは別のスレッドで実行されるかどうかを知りたいです。UI の応答性を維持しながら、計算コストの高いコードを実行するのに役立ちますか?
objective-c - ブロックで「自己」のサイクルを保持する
この質問はかなり基本的なものではないかと思いますが、ブロックに取り掛かっている多くの Objective-C プログラマーに関係があると思います。
const
ブロックは内部で参照されるローカル変数をコピーとしてキャプチャするため、ブロック内で使用self
すると、そのブロックがコピーされた場合に保持サイクルが発生する可能性があると聞いています。したがって、ブロックをコピーするのではなく、__block
強制的にブロックを直接処理するために使用することになっています。self
ただの代わりに
私が知りたいのは次のことです:これが本当なら、醜さを避ける方法はありますか(GCを使用する以外に)?
objective-c - Objective-Cブロックに関する優れた紹介やドキュメントはどこにありますか?
Objective-Cでブロックを使用しようとしています。このチュートリアルを実行しましたが、ブロックについて詳しく知りたいです。
Objective-Cブロックとその使用法に関するより良いドキュメントやチュートリアルをどこで探すべきですか?
iphone - BOOL*をALAssetsLibraryに渡す
こんにちは私はBOOLをに渡す必要があります
列挙ブロックには、次の署名があります。
そしてドキュメントは言う:
Stop::ブール値へのポインタ。列挙を停止するには、値をYESに設定します。
ただし、値をに設定しようとすると
次の警告が表示され、列挙が続行されます。
だから私の質問は、停止パラメータへのポインタとしてブール値を渡すにはどうすればよいですか?
どんな助けでも大歓迎です。