啓(152)16クラスを定義するいい加減Objective-Cの書き方にも慣れていかねばならないので、クラスの作り方を見てみることで慣れていこうと思います。Project)クラスを作成してみます。選択しますクラス名を入力します作成場所を決定します。ディレクトリによる階層分けを行う場合等はここで指定するようです作成が完了すると、ファイルのツリーに新たに作成したファイルが登録されていますヘッダファイルと実装ファイルのひな形が完了しました。ヘッダと実装Objective-Cも通常のC、C++同様にヘッダファイルと実装ファイルが別々に必要なようです。他のクラスから見えるのは原則としてヘッダファイルに記述されているもののみで、実装そのものは隠されます。外部からは見れません。公開されるようですインスタンス変数Objective-Cにおいて、インスタンス変数の指定は複数あるようですが、一番手軽なpropertyを利用するのが良さそうです。*[変数名];上記の記述で変数は宣言することができます。[_]付きの変数を自動的に保管してくれます。そのため、自分自身でsetterやgetterを用意する必要がありません。自分自身のクラスのインスタンス変数「input」のgetterを呼び出したのと同等。始まるメソッドはインスタンスメソッドとなるため、インスタンス化していないと利用できません。始まるメソッドはクラスメソッドとなるようです。ヘッダファイルにメソッドを宣言し、実装ファイルにはまだそのメソッドを実装していないとこのような警告が出力されますこの警告が出力された時はおとなしく実装ファイルにメソッドを実装してあげましょう。Trainingの課題を自分なりに解いてみようと思います。Queue機能を持つ「TestQueue」というクラスを作成することを目指しますクラスを作成する先ほど確認した手順を実行し「CmTestQueue」というクラスをNSObjectを継承して作成します。ヘッダファイルには課題で指定された通り、「push」「pop」「size」のメソッドを宣言します。(NSInteger)size;@end実装ファイルを見てみましょう。メソッドを実装していないと警告を出力されてしまうので、空のメソッドを作成しておきます。利用せよ、という指示があるので変数を定義します。先ほどの手順にしたがって、@propertyを利用して変数を宣言します。はて、ここで疑問に思うですが、このままヘッダファイルに変数を宣言してしまうと外部から丸見えです。Queueクラスの中身が実は単なるArrayだということがバレてしまうし、勝手にアクセスされたりするのでよろしくありません。とも外部から隠してしまいたいところです。CmTestQueue...@end実装ファイル内にもinterfaceを宣言してしまいます。このセクション内に変数を宣言すれば外から見えてしまうことはなくなるようです初期化ここは半分覚える事柄のようです。そのため、Objectの挿入は常に最後尾。addObject:object];}少し記述が慣れていませんが、self.queueというのは、先頭で宣言したNSMutableArrayの変数です。NSMutableArrayに定義されているインスタンスメソッドaddObjectを、引数に「object」を渡して呼び出しています。object;}Objectの取得は、取得だけでなく取得したObjectの削除も行う必要があります。返り値に「id」を返します。これはObject自身のIDを示し、Objectを一意に判別するものだそうです。syntaxでのアクセスも可能だそうです。引数なしメソッドはドットシンタックスでアクセス可}これでQueueクラスの作成は完了しました。Componentを変数に結びつけてあげる必要があります。Ctrlキーを押しながら、ViewControllerの実装クラスへドラッグします。名前をつけるダイアログが表示されるので入力します。Componentと変数が結びつきます。*queue;...@endCmTestQueueの初期化処理を記述します。init];Pushボタンを押したら、CmTestQueueのpushを呼び出すように、Popボタンを押したら、CmTestQueueのpopを呼び出すようにしてみます。ボタンをCtrlキーを押しながらViewControllerへドラッグし、ボタンのPushされた時のイベントハンドラを作成しますここに中の処理を実装していきます。self.queue.size];これでひと通りのCmTestQueueの機能を使った簡易UIが完成しました。実行してみます実行結果キーボードを閉じるにはまた一工夫必要だそうです。所感クラスを定義して実際に使ってみるところまでやってみました。C++(MFC)を少しだけ経験していたところもあるため、そこまで違和感はありませんでしたが、やはりプログラムの記述に関しては色々と独自の文化が多いように感じました。正直なところ同じ目的に対して複数の記述方法があるというのは、初心者にとっては困る点かと思われます。1,524,101札幌へ出向中。興味の向く方向が爆発四散。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。