どうもです~。

セミナーの予告編です。
今回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イベントページまで