322
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

iPhoneアプリ開発を始めて分からなかった疑問点まとめ

仕事でiPhoneアプリ開発をやるようになって半年が経ちました。面白いね!
その初期の頃に書いていたメモ書きが見つかったので、それを見返しながらまとめてみました。
新しく始める方のお役に立てれば!

iPhoneアプリ開発の基本

Q. やり方が分からない

A. とりあえず公式読むのがおすすめ。量が多くて躊躇するけど正しい。
  最初に読むなら、以下のリンクの「初めての iOS アプリケーション」。
  日本語ドキュメント - Apple Developer

  それでも分からないって時は、困った時のドットインストール!これ以上に分かりやすいのはない!
  iOSプログラミング入門 (全24回) - プログラミングならドットインストール

Q. StoryBoardの使い方が分からない

A. ちょっと前までは、これについて詳しく書かれている本や記事がなくて困りましたが、最近はありそう。
  これもドットインストールで見ると基本的な使い方は分かります。
  仕事で使わなかったのでよく知らない。。

Q. StoryBoardって使わないの?

A. うちの職場では使ってないです。xibでやってます。
  凝ったアプリを作るには、あまり実用的ではない(らしい)というのと、
  全画面が1つのファイルになるので、複数人で開発する時に競合が発生しやすい、という理由。

Q. xibって?

A. StoryBoardが出来る前に使われていた、GUIで画面を作成するツール。
  StoryBoardと違ってて画面遷移は担当しない。1画面1ファイル。
  クラスを作る時に、「With XIB for user interface」というのを選べば自動的に作られる。

Q. GUIで作成した画面場の部品(ボタンとか)と、コードのひも付けはどうやってするの?

A. クラス作る時に、「With XIB for user interface」を選んでいれば、画面のxibファイルとクラスは自動で関連づけされます。画面上の部品とコードとのひも付けは、画面上のボタンをcontrolを押しながら .h ファイルにドラッグする。それを押した時の処理のひも付けは、GUI上でも出来るし、コードでも書ける。詳しくは調べれば載ってると思います。自分はコードで書く派。

追記

画面上の部品とコードとのひも付けは、画面上のボタンをcontrolを押しながら .h ファイルにドラッグする

コメントで教えて頂きましたが、.m にもドラッグ出来るそうです!
確かに部品のほとんどはpublicでなくていいものが多いので、.m にするケースが多そう。

Q. コードで書く場合、画面遷移ってどうやるの?

A. 画面遷移は、基本的なパターンが3つあって、設計に応じてその中から使い分ける。
  参考:iOSアプリ画面遷移3本勝負 - たーせる日記

Q. 画面遷移時に実行したい処理はどこに書けばいいの?

A. 以下のような順番でメソッドが実行されるから、そこに書く。
 参考:画面遷移時に呼ばれるメソッドの補足 - iPhoneアプリ開発まっしぐら★ - iPhoneアプリ開発グループ

  上の記事はシンプルで分かりやすいけど、記事が古いから、iOS5から出来た viewWillLayoutSubviews と viewDidLayoutSubviews が載ってない。詳しくはこちら。アプリ起動した時に実行されるメソッドとかも説明されてますね。
  参考:iOS のイベント駆動をライフサイクルイベントとユーザアクションイベントにわけて理解する - A Day In The Life

Q. 画面間のデータ共有はどうやるの?

A. ややこしいから、最初は以下のページを参考にとりあえず動くものを作ってた。。
  参考:iOSゆとりプログラミングのススメ - 仕事人の開発日誌

  でもちゃんとやるなら、以下のページを参考にしましょう。
  参考:画面間でのデータの受け渡しに付いて: 永遠ログ

Q. コード書いたのに画面に反映されないんだけど?

A. XCodeで [Product] > [Clean]すれば直るという可能性もありますが、自分がよくやっていたのは、部品を初期化する前に、色々設定していたというケースでした。
  具体的にいうと、initWithNibName: 中で設置した Label や Button に文字を設定して、実行しても反映されない!というケース。それは、UIViewController のライフサイクルをもっと勉強しろという話なんだけど、viewDidLoad が実行された後にしないと LabelやButton などの部品は初期化されていないので、それに値を設定しても反映はされません。部品に初期値を設定する場合は、viewDidLoad でしましょう。

Objective-Cの基本

Q. プライベート変数やメソッドはどう書くの?

A. こことか参考になります。記事中にもありますが、Objective-Cの分からない事は公式ドキュメントの「Objective-Cによるプログラミング」を読むと良さそう。
  参考:イマドキっ子の Objective-C | cockscomb.info

追記(6/14):こっちの方が最近の記事なのでおすすめ。インスタンス変数の宣言の仕方って、色んな情報があって最初分からないですよね。
Modern Objective-Cでのシンプルなプロパティ記述方式 #iPhone #Objective-C #iOS - Qiita [キータ]

Q. @property, @synthesize て何?

A. 以下のページを参考。XCode4.4からは、@synthesize 省略可能。
  参考:Objective-Cの @property と @synthesize の組み合わせが何をやっているのかを解説 - 強火で進め

Q. 定数定義ってどうやるの?

A. #define か const で、 const が推奨されてるんですかね。
  自分は、画面に表示する文字列などは、ファイルをまとめて #defineで宣言してます。
  画面に表示する文字列をまとめてたのは、 Localizable.strings でした…!
  
  参考:Selection 9: Objective-cにおける文字列定数について
  参考:よく使う数値や文字列をhファイルにまとめる。 - Object for cutie

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
322
Help us understand the problem. What are the problem?