質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2017閲覧

XcodeでのViewの扱いについて

monokuro

総合スコア33

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2015/02/09 09:06

参考書を読んでいて気になったことです。
Xcodeのドキュメントアウトラインに表示されている「View(ビュー)」についてですが、これはUIViewクラスのことで、Xcodeの実行ボタンを押したときにUIViewからインスタンスを生成すると書いてありました。
また他のページでは「ビュー」はビューコントローラーののプロパティとも書いてありました。しかしそこではview.addsubview(label)のように、viewをインスタンスのように使っていました。
この2つの説明で少しこんがらがってしまい、自分なりに考えた結果「UIViewからインスタンスを作成したあと、そのインスタンスをViewControllerのviewプロパティに代入した」という結論に至ったのですが、間違ってますか?もしそうなら、間違ってるとこも含めて、「View(ビュー)」について説明していただけると嬉しいです。
まだはじめたばかりですが、回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

英文中の名詞のviewとプロパティのviewが同じ表記なのでややこしいですね

ViewはUIViewを継承するものを指している名詞かと思います。
またViewControllerのプロパティというのも正しいです。
ViewControllerのインスタンス生成時に、ViewControllerに付随するプロパティの生成も同時に行われます。
感覚としてはViewControllerのinit内でプロパティのviewインスタンスが生成されている感じです。

意図が汲み取れているか不安なのですが、いかがでしょうか?

投稿2015/02/09 21:45

noppefoxwolf

総合スコア231

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

monokuro

2015/02/10 02:23

詳しい回答ありがとうございます。 ただいまいち理解できてませんので、補足させてください。 「感覚としてはViewControllerのinit内でプロパティのviewインスタンスが生成されている感じです。」というのは、viewインスタンスは、ViewControllerのプロパティviewから生成されるということですか? viewインスタンスはUIViewクラスから作成されると思ってたので、プロパティからインスタンスが生成されるというのが理解できません。 ど素人に説明するのは骨が折れると思うのですが、説明よろしくお願いします。
noppefoxwolf

2015/02/10 02:36

>viewインスタンスは、ViewControllerのプロパティviewから生成されるということですか? UIKitは実装部分がブラックボックスなので見ることは出来ませんが、恐らくViewController内でUIViewクラスからviewインスタンスが生成→プロパティviewへ代入 となっているのだと思います。 想像ですが、恐らく以下のような感じだと思います。 ```lang-objc -(id)init{ self = [super init]; if(self){ UIView*v = [[UIView alloc] init]; self.view = v; } return self; } ``` このように、viewはUIViewクラスから生成されておりヘッダーだけを一見するとプロパティが生成しているようにみえるのかと思われます。
monokuro

2015/02/10 03:15

なるほど!やっと腑に落ちました。ありがとうございました! 何度も質問して申し訳ないのですが、少し関連したことで聞かせてください。 Viewにラベルを配置したとき、UILabelから生成されたインスタンスは、viewインスタンスのプロパティということになるのでしょうか?ストーリーボードのドキュメントアウトラインの階層を見ると、Viewの配下にLabelがあったのでそう思ったのですがどうなんでしょう?
noppefoxwolf

2015/02/10 03:59

Objective-Cには継承という概念があり、UIlabelなどのクラスはUIViewを継承して作られています。(それが階層としてまとめられている理由です) UILabelがviewインスタンスのプロパティになるのはちょっと惜しいです。 継承はUILabelで実装されているtextやtextColorなどのメソッドがUIViewのプロパティに追加されるという事です。 つまりUILabelはUIViewの全ての機能が使え、そこにテキスト表示の機能を付けたものということです。 UIViewは全てのviewの基本的なクラスで、背景色の表示などの基本的な機能しか持っていません。そこにイベント処理を追加したものがUIButton、文字表示を追加したものがUILabel、画像表示をUIImageViewなど継承と拡張の繰り返しでほとんどのビューが作られています。
monokuro

2015/02/10 06:31

なるほどー。本当に勉強になりました。 質問しといて言うのもなんですが、初心者のうちからこういう細かいこと気にしすぎるのはかえってよくないんですかね? また機会がありましたらよろしくお願いします。とても丁寧に教えてくださってありがとうございました。
noppefoxwolf

2015/02/10 06:54

知っておいても損は無いので、細かい部分に目を向けるのも大切かと思います。 あとは現状の目的・優先度に依るかと思います。もしアプリを完成させることが目的であるならある程度のブラックボックスには目をつぶって開発した方が良いです。 アプリの良し悪しは決してロジックや知識ではなくフィードバックや経験によって変わっていくので注力すべきはその部分になります。 逆に誰かに教えたり、精密な開発を求められるのであれば適宜細かい部分に目を向けるべきだと思います。 自分は前者だったのですが、インスタンスという単語1つを取っても開発前はインスタンスというやんわりとした概念だったのに対して、ある程度開発してからインスタンスに関する説明を読んだ時はすんなりと理解・想像することが出来ました。
monokuro

2015/02/10 07:20

貴重なお話ありがとうございます。 実は昔少しアプリ開発に関して勉強したことがあったのですが、その時は結局作りたいものがなくてやめてしまいました。しかし今回はいくつか作りたいアプリが頭の中にあるので、とりあえず細部にとらわれ過ぎずにアプリリリースまでこぎつけたいと思います。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問