クラスの継承、クラスメソッドと変数の定義、新たにクラスを作成することを簡単にXcodeを使って見ましょう。
クラスの定義
上位クラスを継承して新しいクラスを作る
Xcodeで簡単な Single View Application のプロジェクトを作成します。
MyClassというクラスを作成するために、
[File]->[New]->[File] からObject-C class を選択し [Next]
Class名: MyClass
Subclass of: NSObject
[Next]
- MyClassは新しく作成するクラスの名前
- NSObject を継承してMyClassを作成することを意味しています。
ファイルの保存先を指定するダイアログで、プロジェクトのフォルダ内に入れ[Create]
MyClass.h
MyClass.m が
プロジェクトに追加されナビゲータエリアに表示されます。
Objective-C はC言語のようにクラスを2つのファイルで定義します。
MyClass.h はC言語のヘッダーファイルに相当するもので、インターフェースファイルと呼ばれます。
このファイルは他のクラスから参照されるように定義します。
MyClass.m はC言語の実装ファイルに相当するものです。
これは、他のクラスからはそのままでは呼び出せない、見えないようになっています。
プロパティを使いインスタンス変数を定義する
MyClass.h でインスタンス変数をプロパティ @Property を使って宣言します。
あわせてメソッドの宣言もします。
書き方は @interface @end の間に以下のようにします。
#import 他のインターフェースファイル名@interface クラス名:上位クラス名 @property インスタンス変数名 – メソッドの宣言@end |
MyClass.h
1 2 3 4 5 6 7 8 |
#import <Foundation/Foundation.h> @interface MyClass : NSObject @property NSString *format; - (NSString *) myMethod:(NSString *)myName; @end |
メソッドの実装
MyClass.m にメソッドの実装を @implementation @end の間に書きます。
#import このクラスのインターフェースファイル名 @implementation クラス名 – メソッドの実装 @end |
また、インスタンス変数を実装コード内に self.xxx で取り込んでいます
MyClass.m
1 2 3 4 5 6 7 8 9 10 11 12 |
#import "MyClass.h" @implementation MyClass - (NSString *) myMethod:(NSString *)myName{ NSString *str=[NSString stringWithFormat:@"%@です",myName]; NSString *result=[NSString stringWithFormat:@"%@%@", self.format, str]; return result; } @end |
クラスを呼び出す
この MyClass を他のクラスから読んで実行してみます。
ViewController.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#import "ViewController.h" #import "MyClass.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // MyClass のインスタンスを定義 MyClass *myClass = [[MyClass alloc] init]; // インスタンス変数に定型文を入れる myClass.format = @"こんにちは"; // 引数に「山田」を設定 NSString *name = @"山田"; NSString *str = [myClass myMethod:name ]; // デバッグログで確認 NSLog(@"%@", str); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } @end |
MyClass のインターフェースファイルをインポートします。
#import “MyClass.h”
プロパティ宣言されたインスタンス変数 format をドット記法を使ってアクセスします。
オブジェクト名.プロパティ=値;