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

プログラムの画面 IT関連

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)でリソース操作したりもする。

注意点としては、ちょっとした修正でも大きな差分を生んでしまうので、修正方法の目星がついたら一度差分を無くして修正するとスッキリする。

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

ViewController

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

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

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

AppDelegate

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

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

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

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

Extension

iOS特有の開発指向?らしい。

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

Javaでいう、継承みたいなもの。

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をコピーしました