muapps

iOSアプリ開発で得られた知見をメモ代わりに投稿します。

iOS開発

端末の向きに合わせて一部のViewのみ移動&回転させる

移動 複数の制約を設定しpriorityを変更することで制約を切り替える @IBOutlet weak var targetViewPortraitCenterX: NSLayoutConstraint! // 初期priority: 999 @IBOutlet weak var targetViewPortraitCenterY: NSLayoutConstraint! // 初期priority: 999 @…

Swiftの命名規則

命名について コードのロジックを変更しなくても適切な命名をすればプログラムの動作を壊さずに可読性を改善することができます。 書籍「リーダブルコード」では第1部 表面上の改善 で命名方法が解説されています。 書籍「iOSアプリ設計パターン入門」にはモ…

SwiftLint導入

前提 環境: M1 Mac Xcode13.2.1 SwiftLint0.46.3 インストール SwiftLintのreadme https://zgithub.com/realm/SwiftLint まずMintでインストールしようとしたが以下のエラーが出た。 warning: SwiftLint not installed, download from https://github.com/re…

Clousure - クロージャ

公式ドキュメントを読んでクロージャの整理。 docs.swift.org クロージャはコード内で受け渡しできる自己完結型のブロック。 クロージャは定数および変数への参照をそれらが定義されているコンテキストからキャプチャして保存できる。 グローバル関数とネス…

Dispatchqueueの挙動整理

以下の記事を参考にDispatchqueueの種類ごとにPlaygroundで実行してみた dev.classmethod.jp 実行環境: Xcode13.0 Swift5.2 メインキュー sync(同期) // メインキューは直列(前のタスクが完了次第、次のタスクが実行される) let mainQueue = DispatchQueue.m…

プログレスインジケータ実装

通信中にクルクルするやつ。 extension UIViewController { /// プログレスインジケータを表示する func displayProgressIndicator() { // UI更新はメインスレッドで行う DispatchQueue.main.async { let indicator = UIActivityIndicatorView(style: .white…

Swiftで値をハッシュ化する(SHA256)

ネットで調べると以下の方法が見つかりました。 CommonCrypto(標準搭載) CryptoKit(標準搭載、iOS13以上) CryptoSwift(外部ライブラリ) 1のCommonCryptoは初めから搭載されており、Xcode10以降では単純にCommonCryptoをインポートするだけで使えるようです。…

CocoaPodsをgitignoreに追加する手順

CocoaPodsをGitに含めない場合、PodfileとPodfile.lockのみGitに含める。 Pods/以下のファイルをgitignoreに追加する Pods/* もしくは ディレクトリ名/Pods/* すでにGit管理に含めている場合 ローカルでPodsディレクトリを削除してコミット、プッシュする Gi…

ブランチモデルについて

ブランチモデルの採用 Git Flow その他のブランチモデル ブランチモデルの採用 iOSアプリ開発をしていてブランチ運用について曖昧だったので、調べました。 私の場合、以下の理由で基本的にgit-flowを採用することにしました。 調べた限りモバイルアプリでは…

iOSアプリに新バージョンの要素が適用(反映)されるタイミング

新バージョンiOSのSDKを含んだXcodeにアップデートしたとき(と思われる)。 例えばXcode11のリリースノートを見ると、iOS13のSDKを含んでいるとの記述があります。1つ前のバージョン10.3ではこれを含んでいないことも分かります。 Xcode11と10.3のリリースノ…