問題タブ [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.
objective-c - ブロックを使用してコールバックロジックを単純化する方法は?
プロトコルを提供し、操作が完了したときにデリゲートメソッドを呼び出すクラスと通信する必要があるとしましょう。
ここで、別のクラスにデリゲートメソッドを実装させることはできますが、インスタンス化や呼び出しなどのstuffDone:
場所の近くに記述されたブロックにプロセスをカプセル化することにしました。SomeObject
これを行う?つまり、ブロックに関するこの有名な記事([コールバックの置換]セクション)を見ると、ある種を受け入れるSomeObjectのメソッドをどのように書くことができcompletionHandler:
ますか?
objective-c - ブロックのSELFポインタはありますか?
ブロックをそれ自体の中から再帰的に呼び出したいのですが。obj-cオブジェクトでは、「self」を使用するようになりますが、それ自体の内部からブロックインスタンスを参照するためにこのようなものはありますか?
iphone - 再帰ブロックを使用する場合のEXC_BAD_ACCESS
ブロックを使用して再帰を作成しようとしています。しばらくは動作しますが、最終的にはクラッシュし、アクセス不良の例外が発生します。これは私のコードです:
説明:Square
BOOLを持つクラスがありnuked
ます。また、adjacentSquares
他のSquareを含むNSArrayもあります。
正方形、またはその「接続された」正方形の1つが核兵器であるかどうかを確認したいと思います。
配列processedSquares
は、無限再帰を防ぐためにチェックした正方形を追跡するためのものです。
これを実行すると、(予想どおり)このブロックの呼び出しが多数実行されます。しかし、ある時点で、アクセス不良の例外が発生して最後の行でクラッシュします。
私もこれをコンソールで取得します:
アドレス0x1のメモリに
アクセスできませんアドレス0x1のメモリにアクセスできませんアドレス0x1のメモリに
アクセスできませんアドレス0x1のメモリにアクセス
できません
警告:呼び出しをキャンセルします-現在のスレッドのスタックのobjcコードにより、これは安全ではありません。
私はブロックと再帰にそれほど精通していません。何か案は?
編集1
要求に応じて、バックトレース:
cocoa - OCMock 非同期ブロック コールバック
ファイルのアップロードおよびダウンロード操作を処理する小さなライブラリを構築しており、一連のテストをそれに統合しようとしています。デリゲート コールバック メソッドを使用するのではなく、次のように完了ハンドラー ブロックで非同期応答を処理しています。
基になるuploadFileWithFilename...
メソッドは次のようになります。
男がプリプロセッサの定義を使用し、OCMock を実際のコードベースに挿入している例を 1 つ見ました。それは私には間違っているようです。
このようなコードをテストするための最良の戦略は何でしょうか?
objective-c - NSArray フィルタリング: どの場合に述語を使用し、どの場合にブロックを使用しますか?
パフォーマンスに関しては、比較的大きな配列 (これまでのところ、元の配列の通常のカウントは ±20000 です) で、それをフィルター処理するのに最適な方法はどれですか? ブロックまたは述語?
含まれているオブジェクトの ivar のほとんどは文字列であり、それらを照会したいと考えています。
c - clangを使用してブロックのカスタム保持リリースを実装する方法
私はCで書いたオブジェクトシステムを持っています。これにはオブジェクトの参照カウントが含まれています(オブジェクトはretainCount intを持つ構造体です)。次のようなブロックがある場合:
次に、ランタイムヒープ-Block_copyが呼び出されたときに整数iを割り当てます。ただし、代わりに参照カウントオブジェクトを使用する場合:
次に、参照される値ではなく、ポインタ自体がランタイムによってヒープ割り当てされます(ただし、Object_New関数によってすでにヒープ割り当てされています)。オブジェクトは参照カウントされるため、ブロックが解放される前に、別の関数がやって来てオブジェクトを解放する可能性があります。オブジェクトを明示的に保持すると、解放されることはありません。だから、私の質問は、オブジェクトが解放されたときにオブジェクトを明示的に解放するために、Block_deallocにコールバックを追加するにはどうすればよいですか?
ありがとう。
objective-c - Objective-Cの高速列挙バブルソート
いくつかのGCDをコードに統合しようとしていますが、深刻なボトルネックは、大きな配列内のオブジェクト間で実行しているバブル比較であることがわかりました。元のコードは次のとおりです。
私のドリフトを取得しますか?したがって、他の多くの高速列挙タスクは、変換することで簡単にGCDすることができます
に:
先読み-sorta-bubble-sorta-algorithm-thingをGCDブロック実装にフィードできるものに変換する方法はありますか?
iphone - オブジェクト参照へのアクセスに関するiPhoneブロックスコープの混乱
文書化されたブロックの使用例のほとんどは、単純な変数を使用したクロージャーを示していますが、周囲のコードに存在するオブジェクトにアクセスしようとする試みには困惑しています。たとえば、これは醜い、役に立たない方法でクラッシュします。
objective-c - ブロック内から [self methodName] を呼び出していますか?
ブロックに出くわしましたが、それらは私が探しているものだと思いますが、1 つのことを除いて: ブロック内からメソッド [self methodName] を呼び出すことは可能ですか?
これは私がやろうとしていることです:
私は数日間検索してきましたが、これが可能であるという証拠を見つけることができません.
これはまったく可能ですか、それとも意図されていないものにブロックを使用しようとしていますか?
ブロックを使用する理由は、Fader クラスを作成し、フェードアウトが終了したときに実行するブロックを保存したいからです。
ありがとうございました
編集:わかりました、提案に追加しましたが、まだ EXC_BAD_ACCESS エラーが発生しています...
フェーダーに機能を持たせてはいけないのかな…?
iphone - iPhone-ブロック内のメソッド内の変数
ブロックで変数を変更できるようにする場合は、事前に__blockを使用して変数を宣言する必要があることがわかっています。しかし、ブロックを次のように呼び出すとどうなりますか
doStuff内のコードはこのルールの対象ですか?doStuffが.hで宣言された変数またはプロパティを使用していると想像してください。これらの変数/プロパティは、__ blockプレフィックスを使用して宣言する必要がありますか?