タグ

ブックマーク / qiita.com/1234224576 (2)

  • 【Swift】ハマりがちな循環参照について - Qiita

    iOSアプリを作ってると気づかないうちにやってしまっている循環参照。 メモリリークの原因は大概コレが原因となっていると思います。 1.循環参照とは? 循環参照とは「クラスAとクラスBのインスタンスがそれぞれ存在した時、クラスAのインスタンスをクラスBのプロパティに格納し、クラスBのインスタンスをクラスAのプロパティに格納する」といった状態になった時に、お互いにインスタンスを参照しあうため、どちらも解放されずにそのまま残り続けてしまう、という現象です。 2.強参照と弱参照 クラスのインスタンスは何も指定しなければ通常「強参照」と呼ばれる形で代入されます。 強参照とは、端的に言えば親子関係です。 親が解放されると子も自動的に解放されます。 ここで上記のようにお互いが親としてインスタンスを保持すると循環参照が起きるわけです。 そこで、この循環参照が起こることを防ぐために弱参照を使います。 Swi

    【Swift】ハマりがちな循環参照について - Qiita
  • Objective-CのBlocksとSwiftのクロージャでは変数のキャプチャが違う - Qiita

    var sampleStr = "ABCD" let showCaptureString = {(number:Int) -> String in sampleStr + String(number) } showCaptureString(99) sampleStr = "DCBA" showCaptureString(99) まず、showCaptureStringというクロージャを定義。 これは受け取った数字とキャプチャしたsampleStrを連結して返すもの。 1行だけなのでreturnは省略できる。 実行結果は、最初のshowCaptureString(99)ではABCD99が返る。 そして、sampleStrをDCBAに書き換えた後、もう一度同じようにshowCaptureString(99)を実行すると、DCBA99が返る。 これと同じような事をObjective-CのBlo

    Objective-CのBlocksとSwiftのクロージャでは変数のキャプチャが違う - Qiita
  • 1