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


前回に引き続き、アップル純正の「Objective-Cプログラミング言語」を使った勉強です。
http://developer.apple.com/jp/devcenter/ios/library/documentation/ObjC.pdf

目次は以下です(再掲)。

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


今回は第 2章、第 3章を読みました。
印象的だったところを書き出してみます。

インスタンス変数の有効範囲(43ページより)
ishot-1.png

有効範囲ディレクティブは、それ以降、次のディレクティブまたはリストの終わりまでの間に記述 されたインスタンス変数に適用されます。次の例では、ageおよびevaluationインスタンス変数は @private、name、job、およびwageは@protected、bossは@publicです。

@interface Worker :NSObject
{
    char *name;
@private
    int age;
    char *evaluation;
@protected
    id job;
    float wage;
@public
    id boss;
}

デフォルトでは、無指定のインスタンス変数(上記のnameなど)はすべて@protectedです。


変数の有効範囲(スコープ)はVisual Basicなどど同様、private、protected、publicがあることが分かりました。
意外だったのは、無指定の場合protectedになることですね。
Visual Basicでは無指定(Dim宣言した場合)ではprivateなのでちょっと違いますね。

selfとsuperの使用(46ページ)
図や説明の抜粋は省略しますがselfとsuperの違いは、

super:親クラスのものを参照する。親クラス自体がなければ、あるいは親クラスに対象のものがなければ自分の方のものを参照する。
self:常に自分のものを参照する。

ということです。
まあ、ふつう3つのクラスを階層構造を持たせて親子関係で作成するなんてややこしいことはしないでしょうけど。
複雑な処理をする場合に、フレームワーク的なクラスを使わないといけないようなときに仕方なく使う程度ですね。
ルールとしてはそうであったとしても、分かりにくい構造を作ってしまうのはこの箇所がたとえうまくいったとしても他の箇所では誤るかもしれませんから、使わない方が楽ですね。

イニシャライザメソッドの制約と規則(53ページ)

イニシャライザメソッドには、ほかのメソッドには適用されない制約や規則がいくつかあります。
●慣習的に、カスタムイニシャライザメソッドの名前はinitで始まる。
 この例としては、FoundationフレームワークのinitWithFormat:、initWithObjects:、
 initWithObjectsAndKeys:があります。
●イニシャライザメソッドの戻り値の型はidとする必要がある。
 idは、クラスが意図的に想定されていない(呼び出しの文脈にもよりますが、
 クラスが指定されなかったり、変化したりする)ことを示すため、
 戻り値の型はidである必要があります。

(以下略)


Visual Basic,Visual C#といった他のオブジェクト指向プログラムとは違って、Objective-Cではコンストラクタ・デストラクタがありません。
その代わりとなるのがこのイニシャライザメソッドです。

他の言語のコンストラクタ・デストラクタを書く時と違って、自分で定義を書かないといけないのが面倒ですね。
(他の言語ではIDE(統合開発環境)が自動で生成してくれるものもある一方で)
この場合特に注意しないといけないのが戻り値の型はidとすることです。
ちょっと忘れやすくなりますね。

以上いろいろと勉強になりました。基礎は大切ですね。


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

コメントの投稿

非公開コメント

プロフィール

てぃー

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」が掲載!!



 

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