【勉強】Objective-Cプログラミング言語(その1)


今まであまりObjective-Cの勉強をきちんとしていませんでした。
作成するアプリに必要な機能のみを本やネットから得て使っていたためです。
やはり基礎力は大切だと思うようになり、全体把握のためにObjective-Cをざっと勉強することにします。

教科書は当然アップル純正の「Objective-Cプログラミング言語」です。
http://developer.apple.com/jp/devcenter/ios/library/documentation/ObjC.pdf
ネットで検索して出てきました。DevCenterからどうやって辿れば行きつけるかは謎ですが

目次は以下です。

序 章 はじめに
第 1章 オブジェクト、クラス、メッセージ
第 2章 クラスの定義
第 3章 オブジェクトの割り当てと初期化
第 4章 プロトコル
第 5章 宣言済みプロパティ
第 6章 カテゴリと拡張
第 7章 関連参照
第 8章 高速列挙
第 9章 静的な動作の実現
第10章 セレクタ
第11章 例外処理
第12章 スレッド化


今回は「第 1章 オブジェクト、クラス、メッセージ」を読みました。
印象的だったところを書き出してみます。

オブジェクトメッセージについて(16ページより)

セレクタ名には、コロンも含め、名前のすべての部分が含まれるため、上記の例のセレクタの名前はsetOriginX:y:です。コロンが2つあるのはパラメータを2つとるためです。ただし、セレクタ名にはそれ以外のもの(戻り型やパラメータ型など)は含まれません。


以前マインスイーパを作った時に初めて知った「メソッド引数のラベリング」ですが、セレクタの名前が「setOriginX:y:」全体になるとは思ってもみませんでした。
y:も含むという複雑さです。
何と読めばいいのでしょうか。まああまり使うことはないのでいいですが。

それよりも重要なのが以下です。(16ページより)

重要: Objective-Cのセレクタを構成する要素は省略可能ではなく、順番も任意ではありません。いくつかのプログラミング言語では、「名前付きパラメータ」と「キーワードパラメータ」という言葉は、そのパラメータが実行時に数が異なってもよいこと、デフォルト値があること、順番が異なっていてもよいこと、および追加の名前付きパラメータを持てることを意味します。パラメータに関するこれらの特徴は、Objective-Cについては当てはまりません。


要するに、Objective-Cでは引数を省略することができないということです。
Visual BasicでいうOptionalに当たるものがないです。
デフォルト値を使うことが分かっている場合、引数の省略は便利なのですが我慢です。
あるいはVisual C#と同様にオーバーロードを書く方法で対処するかですね。

抽象クラス(27ページより)

ほかの言語とは異なり、Objective-Cには、クラスを抽象クラスとしてマークする構文はありません。
また、抽象クラスのインスタンスを作成することも妨げられません。


事実上抽象クラスはないということみたいです。
てぃーは抽象クラスに必要なプロパティ、メソッドを外形だけ作り、それをVisual BasicではMustOverride、Visual C#ではabstractの各修飾子を付けることで、継承したサブクラス(子クラス)の方で中身を作ることが多いです。
でもこれが抽象的にできないとは残念です。
例えば、RPGゲームの場合、抽象クラス「敵クラス」を作り、子クラスとして「スライムクラス」「ボスクラス」などを作れば、それぞれのクラスのインスタンスで攻撃力・防御力などをオーバーライド必須なプロパティやメソッドで指示できて便利なのに。
対策としては、ふつうのクラスをスーパークラス(親クラス)として作り、プロパティ、メソッドはふつうにオーバーライドするしかないですね。
無駄な重複が生じてしまいますが。


↓この記事が参考になったら拍手をクリックお願いします。今後のブログ作りに役立てたいので。
関連記事

コメントの投稿

非公開コメント

プロフィール

てぃー

Author:てぃー
詳しい自己紹介:こちら
Twitter:@teapipin


follow us in feedly 
にほんブログ村 IT技術ブログへ にほんブログ村 PC家電ブログへ
現在の閲覧者数:

ブログ内検索
今日のアクセス数の多い記事
カレンダー

08月 | 2017年09月 | 10月
- - - - - 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
過去記事ダイジェスト
お知らせ
ツイッター分析の分析結果が新潟大学教育学部の論文に引用
教育の実証研究の場でも高く評価!

ツイッター分析の分析結果が和歌山大学防災研究教育センターの論文に引用
防災の研究において評価!

2015年版ツイッター分析(世界編)が始動!
今回は世界の国別・言語別ツイートを分析!

ツイッター分析の分析結果が慶應義塾大学有名教授の研究論文などに引用
文系の研究までも制覇!

Interval Timer EX
有名雑誌「Mac Fan 2015月2月号」に「インターバルタイマーEX」が3度目の掲載!ポモドーロテクニックに有効!

自作Macアプリ3部作が2014年 Vector 年間ダウンロードランキング Mac トップ100にすべてランクイン

TimeCalcを公開しています!
時間計算、年齢計算、学歴欄作成など。

ツイッター分析の分析結果が人工知能の研究に!
ブログが学会発表で引用されました。

今まで開発したiPhoneアプリのソースコードを公開しています!
勉強に役立ててください。


2013年 Vector 年間ダウンロードランキング Mac トップ100に「デジカメ変更日を撮影日に一括変更 for Mac」と「インターバルタイマーEX」がランクイン

Interval Timer EX
有名雑誌「Mac Fan 2013月4月号」に「インターバルタイマーEX」が2度目の掲載!!

リアルタイムツイッター地図
リアルタイムツイッター地図を公開しています!
位置情報付きツイートをリアルタイムに表示します。

新たなツイッター分析としてイベントツイート分析を行っています!

2012年8月1日(水)開催の「Twitter勉強会」で発表
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack from teapipin


Interval Timer EX
有名雑誌「Mac Fan 2012月3月号」に「インターバルタイマーEX」が掲載!!



 

はてなブックマークの人気記事
ツイート&いいね!ランキング