どうもです~。
今日もセミナー予告編やりますよー。
「プロパティの定義」
定義の記述は
@property(プロパティ属性) 型 プロパティ名;
となる。
この定義を書くことで、外部から変数にアクセスできる。
プロパティに対する外部からのアクセス方法は、
インスタンスの変数名.プロパティ
となる。
たとえば、インスタンスaに対して、プロパティpropにアクセスする場合、
a.prop = 5; // プロパティの代入
b = a.prop; // プロパティの取得
となる。
プロパティ名は、インスタンスの内部変数とは別物で、インスタンスに対して
外向けの窓口を設置しているようなもの。
プロパティ属性は、下記のものをコンマ区切りで指定。
nonatomic マルチスレッドによる読み書きチェックをしないで高速化(これはほぼ書く)
readonly 書き込み不可
readwrite 読み書き可能(デフォルト)
strong ARCの場合の定義。代入のタイミングで参照を保持(retainCount++)
week ARCの場合の定義。代入のタイミングで参照を保持しない(retainCount変化せず)
retain ARC無効の場合の定義。代入のタイミングで参照を保持(retainCount++)
copy 代入のタイミングでコピーを作成して保持。NSCopyingが実装されているクラスのみ有効
assign 単純代入。クラスでない変数など。(デフォルト)
getter=メソッド名 プロパティの取得をしたときにメソッドを呼び出す
setter=メソッド名: プロパティの代入をしたときにメソッドを呼び出す
属性をわーって書かれるとなんのこっちゃって感じだけど、
nonatomicはほぼ必ず設定する、あとは、オブジェクトの性質によって、
strongとcopyを使い分ける、くらいわかってれば問題ないと思う。
「 メソッドのオーバーライド」
クラスを継承した場合、同名のメソッドを作り替えて別の動きをさせることもできる。
親クラスのメソッドを書き換えることをメソッドの「オーバーライド」という。
例えば、
ClassAクラスにtestメソッドが定義されているとして、
@interface ClassB:ClassA
@end
@implementation ClassB
- (void)test{
[super test]; // 親クラスの処理を行う場合は記述
追加処理
...
}
@end
と、記述して追加処理を書く。
superは、親クラスのインスタンスを表している。
メソッドのオーバーライドはオブジェクト指向で一番活用される機能かも。。
違うところだけからっぽで親クラスを作っておいて、それぞれの処理を
子クラスでオーバーライドする、なんてのは、まさにオブジェクト指向の醍醐味w
今日は以上です。
ではでは。
↓↓セミナー詳細はこちら↓↓
場所:代々木研修室B1F(代々木駅徒歩1分) http://e-kaigi.eabc.jp/
日時:2013年8月9日(金)19:00-20:30
参加費:500円
定員:20名
詳しくはFBイベントページまで
今日もセミナー予告編やりますよー。
「プロパティの定義」
定義の記述は
@property(プロパティ属性) 型 プロパティ名;
となる。
この定義を書くことで、外部から変数にアクセスできる。
プロパティに対する外部からのアクセス方法は、
インスタンスの変数名.プロパティ
となる。
たとえば、インスタンスaに対して、プロパティpropにアクセスする場合、
a.prop = 5; // プロパティの代入
b = a.prop; // プロパティの取得
となる。
プロパティ名は、インスタンスの内部変数とは別物で、インスタンスに対して
外向けの窓口を設置しているようなもの。
プロパティ属性は、下記のものをコンマ区切りで指定。
nonatomic マルチスレッドによる読み書きチェックをしないで高速化(これはほぼ書く)
readonly 書き込み不可
readwrite 読み書き可能(デフォルト)
strong ARCの場合の定義。代入のタイミングで参照を保持(retainCount++)
week ARCの場合の定義。代入のタイミングで参照を保持しない(retainCount変化せず)
retain ARC無効の場合の定義。代入のタイミングで参照を保持(retainCount++)
copy 代入のタイミングでコピーを作成して保持。NSCopyingが実装されているクラスのみ有効
assign 単純代入。クラスでない変数など。(デフォルト)
getter=メソッド名 プロパティの取得をしたときにメソッドを呼び出す
setter=メソッド名: プロパティの代入をしたときにメソッドを呼び出す
属性をわーって書かれるとなんのこっちゃって感じだけど、
nonatomicはほぼ必ず設定する、あとは、オブジェクトの性質によって、
strongとcopyを使い分ける、くらいわかってれば問題ないと思う。
「 メソッドのオーバーライド」
クラスを継承した場合、同名のメソッドを作り替えて別の動きをさせることもできる。
親クラスのメソッドを書き換えることをメソッドの「オーバーライド」という。
例えば、
ClassAクラスにtestメソッドが定義されているとして、
@interface ClassB:ClassA
@end
@implementation ClassB
- (void)test{
[super test]; // 親クラスの処理を行う場合は記述
追加処理
...
}
@end
と、記述して追加処理を書く。
superは、親クラスのインスタンスを表している。
メソッドのオーバーライドはオブジェクト指向で一番活用される機能かも。。
違うところだけからっぽで親クラスを作っておいて、それぞれの処理を
子クラスでオーバーライドする、なんてのは、まさにオブジェクト指向の醍醐味w
今日は以上です。
ではでは。
↓↓セミナー詳細はこちら↓↓
場所:代々木研修室B1F(代々木駅徒歩1分) http://e-kaigi.eabc.jp/
日時:2013年8月9日(金)19:00-20:30
参加費:500円
定員:20名
詳しくはFBイベントページまで