タグ

@synthesizeに関するfoxsafariのブックマーク (2)

  • ダイナミックObjective-C(102) プロパティ(2) - プロパティの宣言

    プロパティの話を続けよう。今回は、プロパティを宣言するための文法を調べてみる。 プロパティの目的 まず、プロパティの目的を明確にしておこう。プロパティとは、「クラスにアクセッサメソッドを簡単に付加する」ために導入されたものだ。 以前であれば、クラスが持つインスタンス変数に安全にアクセスさせるには、アクセッサメソッドを手動で追加する必要があった。これを自動化してやろう、というのがプロパティの目的だ。 ここで注意しておきたいのは、プロパティを使うとそのアクセスではメソッド呼び出しが発生する、というところだろう。前回、Objective-Cではほぼ自由にインスタンス変数にアクセスできるということを紹介した。プロパティではこれらの手段は使わずに、適切なメソッドを提供することになる。 この手法の利点は、安全であるということだ。とくにObjective-C特有の、retainやreleaseを伴ったオ

    ダイナミックObjective-C(102) プロパティ(2) - プロパティの宣言
  • Objective-C 宣言プロパティの更なる理解 - @dynamicを使った定義など. | thaty

    前回、宣言プロパティの概念と基的な使い方を解説しました。大まかに言えば以下のように、アクセサを省略して書くことができるものだと考えてもいいかもしれません。 今回は宣言プロパティの使い方をもう少し詳しく見て行きましょう。 プロパティ名とインスタンス変数名を区別する 上の例では、@propertyで宣言している名前は、インスタンス変数と同じです。 これを別の名前で定義することによって、外部からのアクセス時に使う変数と、内部からしかアクセスしない変数を明示的に区別することができます。 以下のように、まず@property定義時に外部アクセス用の変数名を宣言し、@synthesizeでインスタンス変数と外部用の変数を結びつけてやります。 /* Human.h */ @interface Human : NSObject { BOOL man; NSString* name; int starSi

    Objective-C 宣言プロパティの更なる理解 - @dynamicを使った定義など. | thaty
    foxsafari
    foxsafari 2014/02/13
    このために@dynamicというコンパイラ指示子が用意されています。これはコンパイラに、プロパティは宣言されてるけど、アクセサを自動生成しなくてもいいよということを教えるものです。
  • 1