HosokawaDev.com

サービスリリースを目指す19才大学生、プログラミング初心者の学習日記です。株式会社トライブユニブにてCodeCampの運営に携わっております。       GitHubURLはhttps://github.com/DaikiHosokawa/practiceです。

iOSアプリの基本的な構造を学ぶPart4

今回は実際にViewControllerクラスに機能を追加してみようと思います。

まず、ヘッダファイル(ViewController.h)でcounterプロパティとfullName:lastName:メソッド、countUpメソッドを宣言します。

f:id:popeppo:20140405235024p:plain

続いて実装ファイルにfulName:lastName:メソッドとcountUpメソッドを実装します。

f:id:popeppo:20140405235109p:plain

次にcounterプロパティとfulName:lastName:メソッドとcountUpメソッドを試したいと思います。
メソッドを実行する時は、[オブジェクト メソッド]を使います。

ViewContrllerクラスのメソッドをViewControllerクラスで使うとき、[self メソッド名];

の書式で実行します。同様にViewContrllerクラスのプロパティをViewControllerクラスで使うとき[self.プロパティ]または[_プロパティ]と入力します。

では、ViewDdLoadメソッド内で実行してみようと思います。ViewDidLoadメソッドはViewControllerが管理している画面が読み込まれた時に実行するメソッドです。

コードは以下です。

f:id:popeppo:20140405235122p:plain

デバッグエリアは以下です。

f:id:popeppo:20140405235140p:plain

 

次回はアウトレットとアクションを学習します。

 下記GitHubのURLです。 

DaikiHosokawa/practice · GitHub

iOSアプリの基本的な構造を学ぶPart3

今回は実装ファイルの基本的な構造を学習します。基本的な構造は以下のようになります。

f:id:popeppo:20140405150200p:plain

 

#import

クラスのヘッダファイルやフレームワークを指定する。クラスのヘッダファイルを必ずインポートする

クラスエクステンション @interface~@end

“クラス内だけ”で使うインスタンス変数、プロパティ変数、メソッドを宣言します。宣言する変数やメソッドがない場合はいらない。

@inplementation~@end

ヘッダファイル&クラスエクステンションで宣言したプロパティの初期化やメソッドの定義を行う。メソッドは宣言した書式と会うようにデータ型、変数を定義する。

実装ファイルの実際のコードをViewController.mを見て確認してみました。

f:id:popeppo:20140405230114p:plain

メソッドのオーバーライド

インプリメンテーションセクションではviewDidLoadメソッドとdidReceiveMemoryWarningメソッドが定義してあります。ですが、ViewControllerクラスのヘッダファイル(.h)のインプリメンテーションセクションではメソッド宣言がありませんでした。
つまり、スーパークラスのメソッドをサブクラスで再定義しているのです。これを「オーバーライド」と言います。簡単に言うと上書きです。(参照:http://wisdom.sakura.ne.jp/programming/objc/objc6.html)

再定義されているメソッドを見るとメソッド名をsuper(スーパークラス)に対して送っています。

これによって機能の追加を含めた上書きを可能にしているのです。

次回は実装ファイル(.m)の練習をしてみます。

下記GitHubのURLです。

 DaikiHosokawa/practice · GitHub

iOSアプリの基本的な構造を学ぶPart2

今回はヘッダファイル(.h)の構造を学習します。

ヘッダファイルの基本的な構造は大まかに以下のようになっているそうです。

f:id:popeppo:20140405140558p:plain

 

#import 

#importはクラス定義で使用するフレームワークやソースファイルを読み込む命令文です。

@interface~@end

@interfaceの行ではクラス名と継承するスーパークラス名、プロトコル(実装するメソッド名やプロパティなどが書いてある規格書)を宣言します。

@interfaeから@endまでがインターフェースセクションでこの中でインスタンス変数やメソッド等を宣言します。

インスタンス変数宣言

インスタンスの宣言は{}内で行います。書式は 

データ型 変数名; 

です。

プロパティ変数宣言

プロパティ宣言した変数は他のクラスから読み書きできるオブジェクトの属性になります。書式は

@property (属性) データ型 プロパティ名;

です。属性のオプションは沢山あるようです。今後つまづいたときまた検索しようと思います。例えばこんなサイトもあります。

iOS - Objective C のプロパティ属性まとめ - Qiita

メソッド宣言

メソッド宣言ではメソッド書式を書きます(要クラスリファレンス参照)。+は暮らすメソッド、-はインスタンスメソッドです。返値(メソッドを実行した結果の返ってくる値)が無い場合はvoidをデータ型に設定します。書式は

+(返り値のデータ型)メソッド名;(データ型)引数 ラベル2:(データ型)引数2 ・・;

-(返り値のデータ型)メソッド名;(データ型)引数 ラベル2:(データ型)引数2 ・・;

 

次回は実装ファイル(.m)の構造を学習しようと思います。

 

下記GitHubのURLです。 

DaikiHosokawa/practice · GitHub

iOSアプリの基本的な構造を学ぶPart1

Objective-Cの基本文法はさらっとやって、これからはiOSアプリの基本的な構造を学習して行きたいと思います。

参考図書:詳細!Objective-C

ヘッダファイルと実装ファイル

f:id:popeppo:20140405135203p:plain

図示したように拡張子.hのファイルが「ヘッダファイル」、拡張子が.mのファイルが「実装ファイル」、二つが協力してクラスを定義しています。
振り返りますが、クラスとはオブジェクトを作る大事な設計図です。

f:id:popeppo:20140405135231p:plain

Class Prefixというところをいじると、入力した文字が各クラスの接頭語として付きます。

AppDelegateクラスとViewControllerクラスはiOSアプリの基本となるクラスで、

f:id:popeppo:20140405135254p:plain

となっております。

 

ストーリーボード

Main.storiyboadファイルは、画面デザインとセグエ(矢印)で画面遷移を行う設定を行うファイルです。

使用方法の一例を以下に示します。

①アシスタントエディタを開き、ストーリーボードの画面でGUI部品(今回はスイッチ)とコードを[control]キー&ドラッグで接続

f:id:popeppo:20140405135326p:plain

②設定を選んでコネクション

f:id:popeppo:20140405135340p:plain

③実際にプロパティ宣言のコードが出来ている

f:id:popeppo:20140405135354p:plain

 

今回は以上です。

下記GitHubのURLです。

 

DaikiHosokawa/practice · GitHub

 

Objective-C 基本文法練習Part11

今回は配列利用の練習の後半です。

f:id:popeppo:20140405035251p:plain

デバッグエリアは以下のようになっております。

f:id:popeppo:20140405035325p:plain

これでも配列はまだまだ氷山の一角に過ぎないようで、今回2回だけではまとめきれなかったので、またいつか復習したいと思っています。飛ばしているのは「配列の値をソートする」という部分の学習です。

下記GitHubのURLです。

 

DaikiHosokawa/practice · GitHub

Objective-C 基本文法練習Part10

今回は配列利用の練習をしました。配列を利用すると複数のデータをまとめて扱う事ができます。配列は少しボリュームがあったので、前半と後半に分けます。今回は前半です。

f:id:popeppo:20140405030159p:plain

デバッグエリアは以下です。

f:id:popeppo:20140405030225p:plain

下記GitHubのURLです。

DaikiHosokawa/practice · GitHub

Objective-C 基本文法練習Part9

今回は文字列処理の練習をしました。

f:id:popeppo:20140405020442p:plain

今回もコメントを入れながら自分自身の理解を確かめながら練習をしてみました。

文字列処理は比較的簡単でした。

クラスやメソッド、引数の設定などはしばらくは振り返ったり、リファレンスを参考にしないと厳しそうです。

デバッグエリアは以下です。

f:id:popeppo:20140405020508p:plain

思い通りにログに出力されると嬉しいです。。

下記GitHubのURLです。

DaikiHosokawa/practice · GitHub