タグ

ブロックに関するakatakunのブックマーク (3)

  • [Objective-C] Blocksがややこいのでまとめてみる - Qiita

    色々ややこしいBlocks。 宣言の仕方から、内部実装まで色々と調べたりしたのでメモ。 基形 まずは基形。

    [Objective-C] Blocksがややこいのでまとめてみる - Qiita
    akatakun
    akatakun 2018/06/07
    ブロックは自動変数をコピーし自身のメンバとして保持する。コピーであるため変更してももとの変数は変化しない。変化させるには自動変数の宣言に__block修飾子を付ける
  • Blocksを活用する事例と小技 - Qiita

    概要 Blocksはみなさんよく使いますでしょうか。 私は最初objective-cを勉強したときにBlocksのややこしい書き方を見て ああこれは絶対使えるようにならないと思ったのですが、 使えば使うほど便利な場面が多くて今ではなるべく使えないか考えるようにしています。 そこで基をおさらいつつ、どんなときに使っているか書きたいと思います。 そもそもBlocksってなに? ざっくり言うと関数を式として宣言、作成することが出来る仕組みです。 なので、関数をそのまま変数のように関数に受け渡すことが出来ます。 調べると結構説明が難しい説明がたくさん書いてあるのですが、 「関数を変数として扱える仕組み」、と覚えておけばひとまずは良いかなと思います。 書き方はこのあたりを参考にすると良いかと思います。 ■ブロック構文の基的な使い方 http://www.objectivec-iphone.com

    Blocksを活用する事例と小技 - Qiita
    akatakun
    akatakun 2018/05/09
    ざっくり言うと関数を式として宣言、作成することが出来る仕組み,APIに渡したり、必要に応じて格納したり、マルチスレッドで使用するなど
  • Objective-CのBlocksの循環参照とその解決策

    半年までは、Objective-Cでコールバックの処理は、delegateを使って実装していました。しかし、delegateによるコールバックは処理の繋がりが分かりにくいというデメリットがあります。 これは皆さん感じるところだと思いますが、実際に最近のObjective-C開発は、Blocksを使って記述するのがトレンドだと思います。 ただ、メモリ管理に関して少し注意しなければならない点があるので、検証結果も合わせて記していきたいと思います。(少し長くなるので2回にわけて書きたいと思います。) Blocksで処理を行う これは簡単なサンプルです。BlocksRunnerクラスは、Blocksで渡された処理を保持し、runメソッドが呼ばれた時にその処理を実行します。 int main(int argc, const char * argv[]) { @autoreleasepool { Bl

    Objective-CのBlocksの循環参照とその解決策
    akatakun
    akatakun 2018/05/08
    Blocks内部で用いる変数が「解放されていないことを保証することができない」という問題があります
  • 1