タグ

Copyに関するBowz13のブックマーク (3)

  • こたつつきみかん » retain と copy の使い分け方

    Objective-C のメモリ管理やオブジェクトのオーナーシップは、Objective-Cを始めるプログラマにとって、少なからず理解に苦しむこともあるようですが、今回はある程度理解したプログラマ向けの、 retain と copy の使い分け方を書こうと思います。 実は、この retain と copy の使い分け方は、Cocoa基礎ガイドにも載っています。 copyとretainの使用面における違いは、前者の場合、新しい所有者による単独使用のためにオブジェクトが要求されることです。新しい所有者は、コピー元に関係なく、コピーしたオブジェクトを変異させることができます。通常、オブジェクトを保持するのではなくコピーするのは、オブジェクトが値オブジェクトの場合、つまり何らかのプリミティブな値をカプセル化している場合です。このことは、オブジェクトがNSMutableStringなどのように可変(

    Bowz13
    Bowz13 2014/02/12
    オブジェクトを値として扱っているようなときは、copy を使用します。それ以外の場合は、retain です。これに当てはまらない例外も存在します。
  • コレクションのコピー

    『はじめてのiPhoneプログラミング』の文中で、『NSMutableCopyingのコピーは浅いコピーなので~』の説明が足りない気がしたので調べてみました。 オブジェクトのコピーとしては『浅いコピーと深いコピー』として『詳解 Objective-C 2.0』に解説があるのですが、辞書の場合についてもう少し知りたくて検索した所『Collections Programming Topics』というリファレンスがありましたので、『Copying Collections』の項を訳してみます。 ●コレクションのコピー オブジェクトのコピーには浅いコピー(Shallow copy)と深いコピー(Deep copy)の二種類があります。 通常のコピーは浅いコピーで、新しく生成したコレクションの所有権は元のオブジェクトと共有しています。 深いコピーは元から新しいオブジェクトを生成し、新しいコレクション

  • 【コラム】ダイナミックObjective-C (58) デザインパターンをObjective-Cで - Prototype (2) | エンタープライズ | マイナビニュース

    前回は、Prototypeパターンの基的な実装を紹介した。その結果、ある意味当然だが、Prototypeパターンではオブジェクトのコピーが重要な事が分かったと思う。 そこで、今回はObjective-CとCocoaにおける、コピー機能の紹介をしよう。非常に基的な機能なのだが、議論すべき点はたくさんある。 単純なコピー まず、最も単純なコピーから考えてみよう。コピーする対象はオブジェクトなのだが、いくらオブジェクトといっても所詮はメモリ上のデータなので、同じサイズのメモリ領域を確保して値をコピーしてやれば、コピーは完了する。Objective-CはC言語とのハイブリッドなので、mallocとmemcpyを使えばいい。 といっても、それでは原始的すぎるので、Cocoaではオブジェクトの単純なコピーをサポートする関数が用意されている。NSCopyObjectだ。定義は次のようになる。 Lis

  • 1