クラスを定義する際のメソッドの宣言でcやbといったものを使っている理由。
ここでいうcやbはダミーと言って、実際にメソッドが実行される際には関係のないもの。
setfillColorを例にすると、このメソッドは実行されるとfillColorにShapeColor型の値を代入しろということをここでは述べている。具体的な値に関してはmain関数の方で準備されるので、ここではどのような値が入るかという例を示しているだけだ。なので、ここだけ見ると勝手にcを宣言して勝手にcを代入しているようにしか見えず、さらにこれらの命令が連続して行われるものとしてみてしまったために混乱が生じた。
ちなみに、CircleクラスのfillColorには以下の手順でkRedColorが割り当てられる。
main関数の中でCircleクラスのshapes[0]という構造体に対して、kRedColorという引数を用いてsetFillColorというメソッドを実行する。メソッドsetFillColorではfillColorに対してShapeColor型の値を代入しろと言っているので、与えられたkRedColorをfillColorに代入してやる。
そしてもう1つの疑問点。
main関数の最後でdrawShapes (shapes, 3)というメソッドを実行するように言っているが、そのカッコの中身の意味について。
実際にメソッドがどのように宣言されているかチェクすればすぐに分かった。
メソッドでは、id型のshapes[]とint型のcountに値を入れてから実行しろと言っている。
main関数で書かれていた(shapes, 3)というのはこれに割り当てるための引数だったのだ。
どのように使うかはこのメソッド内で定義している。
for文で3回分ループさせてiを1ずつ増やし、shapes[i]をid型のshapeに代入、そのshapeを使ってdrawメソッドを実行する。
このように、メソッド間のやりとりを読み取るのに苦戦した。
これがオブジェクト指向というものなのだろうか。自分でコードを全て記述するのは非常に困難だ。。。
iPhone SDKの恩恵の大きさを知った。
次回からは先生とマンツーマンで進めて行く。
よろしくお願いします。
0 件のコメント:
コメントを投稿