初めまして。objective-Cの初心者で、「self」についての質問です。
「selfとは、自分自身を表す変数である。」と、様々なWebサイトや参考書に書いてあるのですが、いまいちピンときません。
例えば、target:selfとか、hoge.delegate=selfだとか、self.title=@"hoge"のようにselfが前に付いたり、後ろに付いたり、”:”だったり”=”だったり”self.”もしくは”.self”だったりでselfが何をしているのかが全く分かりません。
例えば@implementationの中の”Hoge{”内にあるtarget:selfという文があっても、「Hogeをターゲットにして自分(self)を呼び出して、一体何をしているんだ?」と考え込んでしまいます。
一体selfとは何者なのか(隠し引数だとか自分自身だとか、言葉は分かってるのですが)どなたか、ピンとくる回答をお願いいたします。「このselfさえ分かればもう、つまづく事は無い!」「このselfさえ攻略してしまえば...!」というところが、今の気持ちです。「これさえ分かれば」なのです。どうぞよろしくおねがいいたします。
No.2ベストアンサー
- 回答日時:
オブジェクト指向という考え方は、プログラミングの中に現るものを「物」として扱い、それに対して、「メッセージ」を送ることで、処理を行おうという考え方です。
なので、基本は、「だれが」「だれに」「どのようなメッセージ(と、ついでに、パラメータ)」を送るか。
そして、メッセージの受け手は、「受けたメッセージに対してどういう反応を示すか」ということ。
たとえば、ドラマや芝居で、「この人物は、どのような言葉をかけられるとどう行動するか」ということを全部決めて、あとは、「スタート」と声をかけると、ドラマが勝手に進行する(処理が続行される)という考え方の上に成り立っているものです。
普通にドラマを作ろうとすると、始めから終わりまでシナリオを作らなければなりません。
それに対して、ある登場人物に対して、「誰それからこう言われたら、こういう反応をする」ということだけを決めるなら、一度に考えなければならないことが、少なくてすみます。だから、大きなシステムも比較的シンプルに構成できるだろうという発想です。
さて、「だれに」という要素が存在するのですが、メッセージというのは、自分以外の人に送ればそれですべてOKというものではありません。
「自分にメッセージを送ってください」と設定するとか(郵便.宛先 = 自分)
「自分のことを表明する」とか、(自分.名前 = 太郎)
まあ、そういう文脈で、「自分」ということがあちこち出てくるわけです。
そういう、「物(人も)」と「メッセージ」で成り立つ世界において、「彼」や「彼女」や「あなた」と同じように、「自分自身」を表すものです。
で、自分自身の行動には、いちいち「自分はどうする」といわないように、「自分」というのがなくても、動作は記述できるのですが、本来、他人に当てたメッセージや他人のことも設定できるような部分に、「(他の人じゃなくて)自分」というのを明示するのに、 self が使われたりするわけです。
No.3
- 回答日時:
ギャラのでない、ここで、ながながした説明する気にはなりませんが、まじめに、Objective-Cのテキスト読んだことあるんでしょうか。
よくあるのは、ネットにころがってある、いいかげんな説明をよんでわからん、とか言っていることですが。Appleのドキュメントは、基本、英語ですが、Objective-Cについての説明は、日本語でありますけど、これ、読みました?
No.1
- 回答日時:
>target:selfとか、hoge.delegate=selfだとか、self.title=@"hoge"のようにselfが前に付いたり、後ろに付いたり
前に付いたり後ろに付いたりの意味が判らないなら、ぶっちゃけ「基礎から勉強して来い」なんだけど。
>selfが何をしているのかが全く分かりません。
「何もしてない」が正解。
http://ja.wikipedia.org/wiki/This_(%E3%83%97%E3% …
に解説されてる「this」と同じだから、上記ページをよく読むこと。
上記ページを読んでも理解できないなら、objective-Cなどの「オブジェクト指向言語」は理解できないから、他の言語を習得するか、プログラミングは諦めた方が身の為。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonをjupiter notebookからmecabで頻出の高い単語の抽出について(Runt 1 2022/12/17 18:08
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- Ruby パイソンのクラスについて 3 2023/06/20 07:30
- 物理学 素粒子物理学の自己相互作用(self-interactions)というのは何ですか?単なる相互作用な 1 2023/08/14 22:12
- Ruby 教えてください 2 2023/01/04 17:50
- 確定申告 フリーランスの源泉徴収について 1 2022/09/17 15:33
- ニュース・時事トーク 憲法改正しなくても国防軍を持てる 5 2022/05/02 07:43
- プリンタ・スキャナー プリンターのインストールができません! 5 2023/08/02 11:09
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
仲良かった友達に急に距離を置...
-
最近家の中で物が消えます。す...
-
セリフや演技が自然でリアルな...
-
NHK連続テレビ小説「オードリー...
-
彼女が電マをずっと使っていて...
-
エンジェルハートについて 美...
-
彼の運転が下手すぎてストレス...
-
稲垣吾郎の身長
-
山口百恵の「美・サイレント」...
-
ちゃんと覚えててくれてる! を...
-
男性に質問です。過去に抱いた...
-
冬のソナタ ユジンとチュンサ...
-
子供いらないのですがどこかの...
-
立てば○○ 座れば○○ 歩く姿は...
-
「世界の中心で、愛をさけぶ」...
-
大切な人の死はどれくらいで乗...
-
モブサイコ100の登場人物の強さ...
-
以前の伊藤家の食卓で、古いシ...
-
ドラマのような夢、物語性のあ...
-
お布施?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ちゃんと覚えててくれてる! を...
-
韓国ドラマ ホジュン 朝鮮王...
-
NHK連続テレビ小説「オードリー...
-
GTOのタケシはなぜ死んだのです...
-
以前の伊藤家の食卓で、古いシ...
-
狩人・兄は逮捕されませんでし...
-
最近家の中で物が消えます。す...
-
仲良かった友達に急に距離を置...
-
高校教師 最終回
-
男性に質問です。過去に抱いた...
-
教育実習の依頼や実習時の服装...
-
しばらく呼び出し音が鳴ってか...
-
~より小さいは、「~以下」「...
-
「1つづつ」と「1つずつ」とでは
-
高校教師、先生は手術成功した...
-
ちゅらさん恵里の病
-
彼女が電マをずっと使っていて...
-
漢字で書くと「こどもたち」は...
-
ドラマのような夢、物語性のあ...
-
会社宛の宅配便のサイン
おすすめ情報