【iOS開発入門】Xcode、iOSで押さえておくべき基本事項

プログラムの画面 iOS開発

Androidエンジニアだった僕が、急にiOSアプリ開発に携わった際、学んだことをまとめておきました。
随時更新していく予定です。

Xcode、Swiftの基本用語

Target

ビルド結果で得られる成果物のこと。

iOS, watchOS, OSXなどがある(ビルド時に必ず指定する)。

Xcode上では、左のエクスプローラーで、プロジェクト名をクリックすると選択できる。

Project(.xcodeproj)

iOSやwatchOSなど複数のTargetをグループ化する。

Xcodeは、Projectを開き、Targetをビルドする仕組みになっている。

※「project.pbxproj」というファイルでファイルを管理している。このファイルに記載がされていないと認識されない。

Subproject

先述のProjectの中に、他のProjectを組み込める。
単体でも、親Projectでも開くことができる。

Workspace(.xcworkspace)

複数のProjectを同じレベル(階層)でまとめるのが Workspace。

補足
●1つのメインプロジェクトがあり、そこからだけしか参照がない
→Subprojectとして組み込む
●複数のプロジェクトに依存している
→Workspaceとして束ねる

SafeArea

iPhoneXなどのディスプレイ上部にある「切り欠き」に適した領域のこと。

この領域を考慮して開発することで、切り欠きに被らないようにできる。

storyboard(.xib)

Androidで言う、Designタブで視覚的にデザインできるモードに近い。
iOSの場合は、ファイルで管理している。
このstoryboardに定義したIDを参照して、実行ファイル(.m)でリソース操作したりもする。

注意点としては、ちょっとした修正でも大きな差分を生んでしまうこと。

修正方法の目星がついたら、一度差分を無くして修正するとGit管理がしやすくなる。

差分を無くす方法
・差分を一度全て消す際は、「SourceControl→Discard…」を選択する。
(プロジェクト全体、ファイル単体のみも選べる)

ViewController

アプリケーションのデータと外観をつなげるもの。

ボタンなどにハンドリング処理を付与させることができる。

Androidでいう、Activityのような立ち位置。

AppDelegate

iOSアプリを作成した時点で生成される「AppDelegate.swift」というデフォルトファイルのこと。

僕

Objective-Cの場合は、
AppDelegate.mという実装ファイルです。

アプリ全体のライフサイクルを管理するためのクラス(ファイル)で、
アプリ全体で使うグローバル変数などの管理にも使う。

例えばログイン有無のフラグやGoogleAnalyticsのトラッキングIDなど。

Extension

iOS特有の開発指向のことで、既存のクラスや構造体を拡張することができる。

String型などSDKが持っている「型」は通常改変不可能だが、iOSではそれをExtension(拡張)することができる。

Javaの「継承」と似ているが、クラス名をそのまま拡張することが可能。

僕

例えば「String型を継承して新しい機能を追加する」
みたいなイメージですね。

CocoaPods

iOSのライブラリ管理ツールのこと。

以下の記事にて詳細を解説!

【iOS開発】 CocoaPodsが何なのか〜導入までまとめ
CocoaPodsに関する概要、コマンドの実行方法、導入後の注意点などをまとめてみました。 初学者でも理解しやすいように、細かく解説しています!

UIViewの制約

  • AliginCenter X(Y) to
    • 垂直、または水平方向の中心に揃える
  • Trailing Space to
    • 右側の間隔
  • Leading Space to
    • 左側の間隔
  • BottomSpace to
    • 下方向の間隔
  • TopSpace to
    • 上方向の間隔
  • Propartional Height(Width) to
    • パーセンテージで位置調整できる

UIViewControllerのライフサイクル

UIViewControllerのライフサイクル - Qiita
UIViewControllerのライフサイクルについて UIViewControllerのライフサイクルについてまとめてみました。いざまとめてみるとviewの読み込みや表示に関する部分はある程度理解していたものの、レイアウト関...

条件コンパイル

シンボルを定義しておくと、ビルドする「やつ」によって、その処理を通すか、通さないかを決めることができる。

Objective-Cの基本構造

  • .h(ヘッダファイル)
    • インターフェースを定義する。
    • 存在するクラスを俯瞰することができる。
  • .m(実装ファイル)
    • ヘッダーファイルで定義されたインターフェースを実装して、実際に使う。
    • 実装内容を見ることができる。

上記2つのファイルで分離させることで、管理しやすくしている(多分)
※現在はほとんどのプロジェクトでSwiftが用いられています。

ジョージ・眉間シワ男
ジョージ・眉間シワ男

Objective-Cを使った新規プロジェクトはほぼ無い!
あるとしたら保守案件だろうな。。。

注意点
const(定数)で定義する値(URLなど)も、ヘッダファイル、実装ファイル両方に定義しなければならない。
実装ファイルにURLを定義しているのにエラーが出るときは、ヘッダファイルに定義されているか確認する必要がある!
詳しくはこちら(Qiita)

Objective-Cの特徴

インスタンス生成時、メモリを確保する→alloc
値を保存できるようにする→init

また、以下の構文は同等の意味をもつ。
[[testViewController alloc]init] = [testViewController new]

文字列の比較は

[text isEqualToString:@”りんご”];

Xcodeのショートカット

地味に覚えておくと役に立ちます。
AndroidStudioと若干違うショートカットもあるので、Android開発者の方は使い分けに苦労します。

ファイル内検索

command + F

全体検索

command + Shift + F

ビルド

command + B

ファイル名検索

command + Shift + O

(カーソルがあった位置に)戻る、進む

command + Shift + ←(戻る)
command + Shift + →(進む)

解析の方法と不具合時の対処方法

考え込む女性

Xcodeのバージョンを上げたらビルドエラーが出たときの対処方法

Targetを選択(Xcodeの左側にあるエクスプローラーで、プロジェクト名をクリック)し、Build Settingsを選択する。

後半にある「Swift Compiler – Language」の「Swift Language Version」でコンパイルするバージョンを上げる。

インストールできても、うまく起動しないときの対処方法

  1. メニューバー > Product > Archive
  2. 別Windowで開く(Archive)
  3. 右の「Distribute App」を選択
  4. AdHocにチェックする
  5. そのままNextボタンを押す
  6. Exportする場所を指定する
  7. 指定した場所にIPAファイルが出力される
  8. Window > Devices and Simulators
  9. 出力されたIPAファイルを”INSTALLED APPS”にドラッグ&ドロップして再インストールする

画像やボタンのハンドリング処理を探す

  1. 対象の画面のstoryboardを開く
  2. ハンドリング処理を見たい画像やボタンを選択する
  3. 右のサイドバーに表示される紐づいた処理名で全体検索する。
タイトルとURLをコピーしました