日々の記録。

プログラミングのメモや感じた事などを記録。

その3 "Hello world!!"を表示してみよう!! 中編

その2 "Hello world!"を表示してみよう 前編

前回はHello worldを表示した画面を作成しましたが、今回は作成した画面を表示してみましょう。

今回やること

  • AppDelegate.mのソースファイルの編集して画面を表示する

AppDelegateって?

画面を表示するためには、AppDelegate.mファイルを編集します。AppDelegate.mにはAppDelegateクラスについての処理が書かれています。AppDelegate.mでは、アプリが起動した場合や終了した場合の処理を記述できます。

今回は、このアプリの起動時に画面を表示する処理を追加します。

そもそもクラスって?

iOSのアプリ開発では、基本的にクラス単位に開発を行います。クラスが何かというと、一言でいうなら「特定のデータとその処理をまとめたもの」です。例えばNSStringという文字列を表現するクラスでは、文字列自身の保持とその編集方法を提供します。画面管理を行うUIViewControllerクラスでは、ユーザーが入力した情報を処理したり、画面の更新などを行います。

クラスの中身は、基本的にクラス名.h/クラス名.mという2つのファイルで定義します(3つ以上の場合もあります)。

この記事では、専門用語をざっくりと説明します。より詳しい説明は、Wikipediaのクラス)を参照してください。

AppDelegate.mの編集

ざっとAppDelegate.mの中身をみてみよう

 9 #import "AppDelegate.h"
10 
11 @implementation AppDelegate
12 
13 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
14 {
15     self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
16     // Override point for customization after application launch.
17    self.window.backgroundColor = [UIColor whiteColor];
18    [self.window makeKeyAndVisible];
19    return YES;
20 }

〜 中略 〜
48 
49 @end

9行目 #import "AppDelegate.h"

#import "ヘッダーファイル名" 

で、指定したファイルを読み込みます。

Objective-Cでは、クラスを作成するために、クラスの定義とクラスの実装という2つの作業を行う必要があります。 一般的に.hファイルでクラスの定義を行い、これをヘッダーファイルと呼びます。

.mファイルは、クラスの実装を行い、これをソースファイルと呼びます。 一般的にソースファイルでは、定義をするクラスのヘッダーファイルや利用するクラスのヘッダーファイルをimportで読み込む必要があります。

ここではAppDelegateを定義するために、"AppDelegate.h"を読み込んでいます。

11行目, 49行目

11 @implementation AppDelegate
 
〜中略〜

49 @end

@imlementation AppDelegateからクラスの実装が始まり、@endが実装の終了になります。クラスの実装は、この間(〜中略〜の部分)に記述します。

13〜20行目 application didFinishLaunchingWithOptionsメソッドの定義

クラスの実装といっても具体的に何をするのでしょう?答えはメソッドの定義を行います。メソッドというのは、例えばウィンドウというクラスの場合、「ウィンドウを開く」「ウィンドウを閉じる」「ウィンドウを移動する」「ウィンドウのサイズを変更する」というのがそれぞれメソッドになります。この「ウィンドウを開く」という処理を記述する作業が、メソッドの定義になります。

AppDelegateは、アプリケーションが起動したときや、停止、終了したときの処理を行うクラスなので、そうしたメソッドが定義されています。 下のソースコードは、アプリケーションが起動したときに呼ばれる「application didFinishLaunchingWithOptions」メソッドの定義です。

13 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
14 {
15     self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
16     // Override point for customization after application launch.
17    self.window.backgroundColor = [UIColor whiteColor];
18    [self.window makeKeyAndVisible];
19    return YES;
20 }

詳しい説明は次回以降に行い、前回作成したビューコントローラーMetronomeViewControllerをwindowに表示してみましょう。

9行目から~20行目を以下のように変更します。行頭に+が付いている行が追加した行になります。

   9 #import "AppDelegate.h"
+ 10 #import "MetronomeViewController.h"
  11
  12 @implementation AppDelegate
  13
  14 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  15 {
  16     self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
  17     // Override point for customization after application launch.
  18     self.window.backgroundColor = [UIColor whiteColor];
+ 19     MetronomeViewController* viewController = [[MetronomeViewController alloc] initWithNibName:@"MetronomeViewController" bundle:nil];
+ 20     [self.window setRootViewController:viewController];
  21     [self.window makeKeyAndVisible]; 
  22     return YES;
  23 }
  • 10行目 前回作成したMetronomeViewController.hをimportしています。クラスを利用する場合は、必ず利用するクラスのヘッダーファイルをimportします。
  • 19行目 MetronomeViewControllerのオブジェクトを生成しています。まだこの段階では、MetronomeViewControllerの画面は作られたけど、表示先が指定されていません。
  • 20行目 このアプリケーションのwindowオブジェクトに19行目で生成したMetronomeViewControllerオブジェクトを設定しています。

Command+Rで動作確認してみましょう。

Hello world!が表示されましたか?

次の画像ができたらおめでとう!!

スクリーンショット 2014-08-10 22.11.17.png

次回は、今回の内容の解説をしたいと思います。

まとめ

  • クラスは「特定のデータとその処理」をまとめたもの
  • iOSのアプリ開発は、クラス単位で作成する
  • クラスは、クラス名.h/クラス名.mという2つのファイルで定義する
  • AppDelegateクラスは、アプリケーションが起動したときや、停止、終了したときの処理を行う