どうもです~。
セミナーの予告編です。
今回5回にわけて書こうと思っているので、これで3回目。ちょうど真ん中です~
「クラス定義の書き方」
.h(ヘッダファイル)に書くもの
----------------------------------------
@interface クラス名:親クラス名{
変数定義
}
メソッド定義
プロパティ定義
@end
----------------------------------------
.m(実装ファイル)に書くもの
----------------------------------------
@implementation クラス名
メソッドの実装
@end
----------------------------------------
変数定義のところには、
「型(スペース)変数名;」
として、クラスに変数を列挙する。このインスタンス内部で使用し変数は公開されない。
メソッド定義のところは、メソッドの実装部分のないものを記述する。
Objective-Cのメソッド定義は動的メソッドの場合は
-(戻り値の型)メソッド名:(引数の型)引数 引数のキーワード:(引数の型)引数 …;
となる。
スタティックメソッドは、最初の「-」が「+」にする。
プロパティ定義には、インスタンスの公開プロパティを定義する。
プロパティ定義については、次に詳しく説明します。
メソッドの実装のところに、定義したメソッドに対応した実装を記述する。
書き出しは定義と同じで、最後を;(セミコロン)で終わらせず、{}で囲って処理を書いていく。
-(戻り値の型)メソッド名:(引数の型)引数 引数のキーワード:(引数の型)引数 …{
処理;
…
}
メソッドを使うときの書き方は、
動的メソッドは
ret = [変数 メソッド名:(引数の型)引数 引数のキーワード:(引数の型)引数 …];
スタティックメソッドは
ret = [クラス名 メソッド名:(引数の型)引数 引数のキーワード:(引数の型)引数 …]
となる
この辺が一番やっかいというか、そのへんの言語とかなり違うところ。
慣れれば大したことないけど、慣れるまでが、はてな?ってなりがちかも。。。
「メモリ管理とARC」
ARCとは、Automatic Reference Countingのことで、インスタンスのメモリ管理を自動でやってくれる機能のこと。
では、そもそも、メモリ管理をどのように実現しているか。
インスタンスには、自分が何カ所から参照されているかを保持するプロパティ(retainCount)がある。
retainCountが0になる=メモリ上にアクセスすることができない、となり、メモリ解放をするdeallocメソッドが実行される。
ARCをオフした場合、このretainCountを手動で制御する必要がある。
NSObjectには、retainとreleaseというメソッドが定義されていて、
参照を開始するタイミングでretain
参照をやめるタイミングでrelease
をARCがオフの場合には、その都度、記述しないといけない。
逆に、ARCをオンにした場合、retain,releaseが記述されているとエラーになる。
ARCが導入されたのが、まだ最近のことなので、サンプルプログラムなどでは、
retain, releaseが書いてある場合もあるので、その場合は、ARCをOFFにしてビルドすると動くかもしれない。
ARCの切り替えは、プロジェクトの作成のときはチェックボックスで切り替えできる。
作成後は、Build SettingsのApple LLVM compiler 4.1 - LanguageのObjective-C Automatic Reference Countingで切り替えできる。
見つからない場合は、「Automatic Reference Counting」で検索するとでるかも。
今後の説明は、ARC有効であることを前提に進めます。
メモリ管理について。
結局、ARCが導入されてからは勝手にやるのでいじらないで!ってことになったので、
知らなくてもうまいことやってくれるみたいだけど。。。
ほんの2、3年前までは、ちゃんとやらないとメモリリークしちゃうので、
ちゃんとやりましょう!ってどこのサイトみても書いてた。
ここ最近で、一番大きな変化かも。。
今回はこんな感じです。
ではでは。
↓↓セミナー詳細はこちら↓↓
場所:代々木研修室B1F(代々木駅徒歩1分) http://e-kaigi.eabc.jp/
日時:2013年8月9日(金)19:00-20:30
参加費:500円
定員:20名
詳しくはFBイベントページまで
セミナーの予告編です。
今回5回にわけて書こうと思っているので、これで3回目。ちょうど真ん中です~
「クラス定義の書き方」
.h(ヘッダファイル)に書くもの
----------------------------------------
@interface クラス名:親クラス名{
変数定義
}
メソッド定義
プロパティ定義
@end
----------------------------------------
.m(実装ファイル)に書くもの
----------------------------------------
@implementation クラス名
メソッドの実装
@end
----------------------------------------
変数定義のところには、
「型(スペース)変数名;」
として、クラスに変数を列挙する。このインスタンス内部で使用し変数は公開されない。
メソッド定義のところは、メソッドの実装部分のないものを記述する。
Objective-Cのメソッド定義は動的メソッドの場合は
-(戻り値の型)メソッド名:(引数の型)引数 引数のキーワード:(引数の型)引数 …;
となる。
スタティックメソッドは、最初の「-」が「+」にする。
プロパティ定義には、インスタンスの公開プロパティを定義する。
プロパティ定義については、次に詳しく説明します。
メソッドの実装のところに、定義したメソッドに対応した実装を記述する。
書き出しは定義と同じで、最後を;(セミコロン)で終わらせず、{}で囲って処理を書いていく。
-(戻り値の型)メソッド名:(引数の型)引数 引数のキーワード:(引数の型)引数 …{
処理;
…
}
メソッドを使うときの書き方は、
動的メソッドは
ret = [変数 メソッド名:(引数の型)引数 引数のキーワード:(引数の型)引数 …];
スタティックメソッドは
ret = [クラス名 メソッド名:(引数の型)引数 引数のキーワード:(引数の型)引数 …]
となる
この辺が一番やっかいというか、そのへんの言語とかなり違うところ。
慣れれば大したことないけど、慣れるまでが、はてな?ってなりがちかも。。。
「メモリ管理とARC」
ARCとは、Automatic Reference Countingのことで、インスタンスのメモリ管理を自動でやってくれる機能のこと。
では、そもそも、メモリ管理をどのように実現しているか。
インスタンスには、自分が何カ所から参照されているかを保持するプロパティ(retainCount)がある。
retainCountが0になる=メモリ上にアクセスすることができない、となり、メモリ解放をするdeallocメソッドが実行される。
ARCをオフした場合、このretainCountを手動で制御する必要がある。
NSObjectには、retainとreleaseというメソッドが定義されていて、
参照を開始するタイミングでretain
参照をやめるタイミングでrelease
をARCがオフの場合には、その都度、記述しないといけない。
逆に、ARCをオンにした場合、retain,releaseが記述されているとエラーになる。
ARCが導入されたのが、まだ最近のことなので、サンプルプログラムなどでは、
retain, releaseが書いてある場合もあるので、その場合は、ARCをOFFにしてビルドすると動くかもしれない。
ARCの切り替えは、プロジェクトの作成のときはチェックボックスで切り替えできる。
作成後は、Build SettingsのApple LLVM compiler 4.1 - LanguageのObjective-C Automatic Reference Countingで切り替えできる。
見つからない場合は、「Automatic Reference Counting」で検索するとでるかも。
今後の説明は、ARC有効であることを前提に進めます。
メモリ管理について。
結局、ARCが導入されてからは勝手にやるのでいじらないで!ってことになったので、
知らなくてもうまいことやってくれるみたいだけど。。。
ほんの2、3年前までは、ちゃんとやらないとメモリリークしちゃうので、
ちゃんとやりましょう!ってどこのサイトみても書いてた。
ここ最近で、一番大きな変化かも。。
今回はこんな感じです。
ではでは。
↓↓セミナー詳細はこちら↓↓
場所:代々木研修室B1F(代々木駅徒歩1分) http://e-kaigi.eabc.jp/
日時:2013年8月9日(金)19:00-20:30
参加費:500円
定員:20名
詳しくはFBイベントページまで