はじめに iOS Advent Calendar 2020 17日目です。 2年半くらいiOSアプリ開発してきてハッとした瞬間をまとめました。(iOSとかswiftに限った話じゃない学びもあるけど。) がんばらなくても読めるけど、なんとなく勉強にもなる記事を目指しました。 タイトルに近い方が初歩的なやつです。 もし時間あればみていただけると嬉しいです。 お品書き 返り値でBoolを返す時はそのBool自身を返せばいい 三項演算子を使うとif else がワンライナーで書ける var +=は計算型プロパティにできる。 ネストは早期returnで減らせる 2重否定はifでいい。 型が明確な時のinitializerは.initに省略できる trailing closureは引数から省略できる enumとswitchを組み合わせて網羅性をチェックする Bool値が複数ある場合の場合分けはswit
今回は、Swift における Generic Programming について理解を含めようということで、Swift の公式ドキュメントを眺めがらメモした内容をまとめていきます。 docs.swift.org 目次 Why generics? Generic Functions Type Parameters Generic Type Type Constraints Associated Types Generic Where Generic Subscripts Why Generics? Generic Code を使用すると、定義した用件に応じて、任意の型で機能する柔軟で再利用可能な関数と型を記述できます。そのため、重複を避け、その意図を明確で抽象化された方法で表現するコードを書くことができます。 タイプセーフ コードの重複 ライブラリの柔軟性 Generics は Swift の
Memory management is the core concept in any programming language. Although there are plenty of tutorials that explain the basic principles of Swift automatic reference counting, I have found none that would explain it from the compiler perspective. In this article we’ll learn what’s beyond the basics of iOS memory management, reference counting and object life cycle. Let’s begin with the fundamen
The iOS Developer Community Survey shows that Model-View-ViewModel (MVVM) is the second most popular architectural pattern for designing iOS apps. It makes a good reason to study the state of modern MVVM with SwiftUI and Combine. In this article we’ll cover: The purpose of MVVM. The components of the MVVM pattern. The flow of data and dependencies in MVVM. Why should we use unidirectional data flo
RxSwiftでViewControllerとViewModelのBinding部分をどう書けばいいかわからなかったので、サンプルコードを集めてみました。 ReactiveX/RxSwift GitHubSignupViewController2.swift class GitHubSignupViewController2 : ViewController { @IBOutlet weak var usernameOutlet: UITextField! @IBOutlet weak var usernameValidationOutlet: UILabel! @IBOutlet weak var passwordOutlet: UITextField! @IBOutlet weak var passwordValidationOutlet: UILabel! @IBOutlet wea
RxSwift使いこなせてますか? 僕もまだ十分とは言えないですが、半年以上はプロダクトに使用してきたので、レビューで指摘されたことを中心に細々としたtipsをまとめてみようと思います 全体的な勉強方針は前回の記事にまとめたので、こちらも良ければ見てください RxとMVVMの勉強ガイド(自分がやってきたこと) クロージャの使用を避ける subscribe(onNext:)などはクロージャに任意のコードが書けるので非常に便利なのですが、やりすぎると手続き型的なコードになりがちだったり、selfを適切に弱参照でキャプチャしないといけなかったりするので、他に代替手段がない場合のみ使用するのが良いと思います。 以下に自分が指摘されたことのある代替手段を示します。 オプショナルをアンラップしたい someObservable // Int?が流れてくるとする .subscribe(onNext: {
RxSwift について基本を説明するとき、Observable から話を始めることが多いかと思います。一方で、RxSwift の実際の活用方法としては、データバインディングが大事になってくることが多いようです。 ここでは、まず従来どおりの Observable の話を簡単にしたあと、データバインディングの話をするという形で入門を書いてみます。 RxSwift とは RxSwift は「非同期イベントを受け取るための枠組み」を提供してくれるライブラリです。 UI イベント受け取り Web API レスポンス受け取り データの変化の監視 RxSwift は ReactiveX ファミリーのひとつです。ReactiveX には、C#、Java など様々な言語のライブラリがあります。 コード例 (1) UIButton button.rx.tap .subscribe { [unowned se
はじめに Rx とは C# 発祥の Reactive Extensions のことで、様々な言語に移植されています。RxSwift は Rx の Swift 版です。 様々な言語に移植されているのは、それだけ有用だからです。しかし Rx は有用である一方で学習コストが高く、導入の敷居が高いとみなされがちです。 ネットで Rx について検索すると、Reactive とは・・・関数指向うんたら・・・と、そりゃオブジェクト指向プログラマにはとっつきにくそうに感じるわな、と思うものが多いです。 ここではオブジェクト指向設計で一般的に利用されるオブザーバーパターンを置き換えるところから、Rx の利用方法を解説してみます。 以下のようにシリーズになっていますが、この記事の内容だけでも十分役に立つと思います。 オブザーバーパターンから始めるRxSwift入門 RxSwift入門(2) 非同期処理してみる
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く