Xcodeの基礎を学んですでに13回目。
今回はViewDidLoadとメソッドです。
【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ12【変数を理解する】 | naonotes.com(ナオノーツ)
1番始めに読み出されるViewDidLoad
ViewControllerが呼び出されたときに、一番最初に呼び出されるのがViewDidLoad。
前回の変数の時も、コードはすべてViewDidLoadに記述した。
基本的には、– (void)viewDidLoad の中に記述したものはすべて実行されるので、とりあえずViewDidLoadにコードを書いていけば何とかなる。
が、ViewDidLoadにすべて書きまくるとソースはわかりにくくなるし、管理が面倒になるので処理を分けて記述していくことになる。
分割記述
前回、変数の回で作ったプロジェクトを開こう。
下記のようなソースコードがViewDidLoadに記述されてるはず。
この赤字の部分をViewDidLoadとは別のメソッドを作って呼び出すようにしてみる。
メソッドとは何かは前回やったね。
-(void)viewDidLoad
{
[super viewDidLoad];
NSInteger cell1 = 100;
NSInteger cell2 = 300;
NSInteger cell3 = cell1 + cell2;
NSLog(@”cell1に入っている数値は%d”, cell1);
NSLog(@”cell2に入っている数値は%d”, cell2);
NSLog(@”cell1+cell2=%d”, cell3);
}
メソッドの作成
ViewDidLoadの下に新規メソッドを作成してみよう。
-(void)viewDidLoad
{
[super viewDidLoad];
NSInteger cell1 = 100;
NSInteger cell2 = 300;
NSInteger cell3 = cell1 + cell2;
NSLog(@”cell1に入っている数値は%d”, cell1);
NSLog(@”cell2に入っている数値は%d”, cell2);
NSLog(@”cell1+cell2=%d”, cell3);
}
– (void)calculation
{
}
これでメソッド calculation が作成された。
が、何も記述されていないため何も処理しない。
そこでViewDidLoadに記述されている変数宣言などをcalculationメソッドに移す。
-(void)viewDidLoad
{
[super viewDidLoad];
}
– (void)calculation
{
NSInteger cell1 = 100;
NSInteger cell2 = 300;
NSInteger cell3 = cell1 + cell2;
NSLog(@”cell1に入っている数値は%d”, cell1);
NSLog(@”cell2に入っている数値は%d”, cell2);
NSLog(@”cell1+cell2=%d”, cell3);
}
これでcalculationメソッドで処理が行われるようになったが、iOSシミュレータを起動してもAll Outputには何も記述されなくなってしまった。
ということは、何も処理されていない。
メソッドの呼び出し
せっかくcalculationメソッドを作ったのはいいものの、ViewDidLoadにcalculationメソッドを呼び出す記述をしないと当然ながら何も行わない。
なので、ViedDidLoadの中にcalculationメソッドを呼び出す記述を追記する。
-(void)viewDidLoad
{
[super viewDidLoad];
[self calculation];
}
– (void)calculation
{
NSInteger cell1 = 100;
NSInteger cell2 = 300;
NSInteger cell3 = cell1 + cell2;
NSLog(@”cell1に入っている数値は%d”, cell1);
NSLog(@”cell2に入っている数値は%d”, cell2);
NSLog(@”cell1+cell2=%d”, cell3);
}
これで実行してみよう。
ちゃんと処理が行われた。
ViewDidLoad内でcalculationメソッドが呼び出されたってことだね。
分割記述のメリット
このようにメソッドを作って分割処理を行うようにすると、同じ処理を複数回行う場合でも何度も同じ処理を記述する必要はなく、そのメソッドを呼び出すだけで済むようになる。
同じ処理を行う分だけ記述をコピペしても結果は同じだが、管理の手間がまるで違う。
たとえば今回cell1に100を入れているが200にしたくなった場合、メソッド分けをしていればcalculationメソッド内の100を200に変更すればいいだけだが、メソッド分けをしていない場合、この処理をコピペした分だけ代入値を変えなければならない。
1つや2つなら変更も楽だが、300回とか呼び出していると300個変更しなければならない。
1つでも変更ミスがあれば思い通りの処理は行われない。
非常に面倒くさいしバグの温床になるので、メソッド分けをしながら記述したほうがいい。
慣れると非常に面白い
XcodeはUIKitなど開発環境が非常に整っているので、それほどスキルがなくてもアプリを作ることが出来る。
だけど書き方がわからないと作ることが出来ない。
逆に言えば、書き方さえわかればあとはUIKitまかせで高度なアプリを作ることが出来るようになる。
しっかりと書き方を学んでいこう。
ちょうど、処理分けの仕方を知りたかったので助かりました。
ローカル変数は引き継がれないので注意してくださいね。
そうなんす。つまづいてますorz
.hの中で変数宣言すれば、
.mの中でどこでも呼び出して使えますよ。
@interface MasterViewController : UITableViewController
{
NSArray *data;
}
みたいな感じで。
参考にさせていただいて、やりたいことがうまくできました。
とてもわかりやすく、すんなり理解できました。
ありがとうございます。
古い記事ですが、お役に立てて幸いです。