クラスの定義【objective-c】
2017-04-28
さて、おはようございます、氷翠です。
またしばらく投稿していなかったけど、Objective-Cの勉強をしていました。
何をしていたのかというと、
「テキストフィールドに文字を入力」→「クラスを定義」→「クラス内で文字を単語に分ける」→「コンソールに出力」
という簡単なものです。
これができないと、目的のアプリケーションまで到達できない。
というか、これは基本的なものです。
C#なら、氷翠は楽にできますが、言語が変わるとまったくもってやり方が違っているので大変ですw
ということで、まずはクラス定義から。
「Test」というクラスを作りたいと思い、「Test.h」「Test.m」という2つのファイルを作成します。
もちろん、storyboadでもobjectを設定して、その中にクラス名を定義しておきます。
本当なら、ここでウインドウの中のテキストフィールドをオブジェクトに繋いで、直接処理できたら…と思ったのだけど、調べてみるとそれはできないようで…
まぁ、ボタンをクリックしたときにテキストフィールドの内容を引数として渡してあげればなんとかなるかとw
#import <Cocoa/Cocoa.h> @interface Test : NSObject { @public NSString *word; @public NSString *viewText; } -(void)getKeyword:(NSString*) keyword; -(NSString *)getString; @end
「Test.h」の中身はこんな感じ。
Storyboadの中でObjectに対してクラスを定義していたので、NSObjectを使うのかとw
実際は違うと思うけど…w
まぁそんな感じで4行目と5行目で、処理で使う変数を定義。
下の方では使えるメソッドを宣言しています。
次に「Test.m」。
#import <Foundation/NSObject.h> #import "Test.h" @implementation Test { NSMutableArray *_dataArray; } - (id)init { self = [super init]; word = @""; viewText = @""; NSLog(@"%@", @"クラスの初期化完了"); return self; } - (void) getKeyword:(NSString*) keyword { // 検索キーワードを取得する word = keyword; NSLog(@"_keyword: %@", keyword); NSLog(@"word: %@", word); if([word isEqualToString: @""]) { NSLog(@"%@", @"文字列なし"); } NSArray *words = [word componentsSeparatedByString:@" "]; NSLog(@"keyword count:%ld", (long)words.count); } - (NSString *) getString { NSString *test = @"test"; return test; } @end
この中ではメソッドが一つ多くプログラムされていますが、「init」というもの。
これはクラスが呼び出されたときに必ず呼ばれるメソッドのようで、初期設定のようなもの。
で、注意として、その呼び出されるタイミングによっては二回実行されることになるので、注意が必要になる。
その実験のために「init」の中でNSLogをやって出力してみているのだ!
あとは、()の中。
idはオブジェクトを示すものだと考えればいいかなと。
要は、()の中では返り値の型を宣言しているもの。
なので、voidは返り値はないけど、NSStringだと、文字列を返すってことになる。
ということで、今回はここまで。
目的のアプリケーションをつくためには、まだまだ知識がたりないなーって思う。
次はファイルの中で特定の文字を検索するってことをしたい。
コメントを残す