サンプルコード https://github.com/SatoTakeshiX/first-step-swift-concurrency/tree/main/try-concurrency.playground 対応するサンプルコードにはページ名を記載します。 検証環境 Xcode 13.2.1 Swift 5.5 データ競合 マルチスレッドプログラミングにおいて、重要な問題はデータ競合(data race)をいかに防ぐかです。複数のスレッドから一つのデータにアクセスした場合、あるスレッドがデータを更新するとデータが不整合を起こしてしまう可能性があります。デバックが非常に難しくやっかいなバグをになることが多いです。 データ競合がどういうものかをコードで解説します。 例えばゲームの点数を管理するScoreという型をクラスで定義します。 // Page: 3-1-data-race class
This post is for Day 23 of Merpay Advent Calendar 2022, brought to you by takeshi from Merpay iOS Team. Introduction Since Swift 5.5 was released in 2021, we are able to use Swift Concurrency. Swift Concurrency prevents your code from data races and provides a simple way to implement async code. It is big news for iOS developers. Merpay iOS team attempts to introduce Swift Concurrency into our cod
はじめに SwiftのドキュメントやOSS見るとGenericsがよく使われてますね。Genericsが使われた関数や型を理解したり柔軟で汎用的なコーディングをしていくためにもGenericsは学んでいくべきだと思います。今回はGenericsについて学んでいきたいと思います。 Generics in Swift, Part 2のWhy generics?では、Genericsを使う理由として以下の3つが挙げられています。 Type safety Less code duplication Library flexibility Genericsを用いることで指定した要件、もしくは任意の様々な型を扱うことができるので、柔軟で再利用可能な型や関数を定義することができます。 ArrayやDictionaryもGenericsなCollectionです。(詳しくはSwiftらしいコーディングを学
// observeの結果を格納 private var keyValueObservations = [NSKeyValueObservation]() // UIScrollViewの移動を感知してclosureを実行する private func addKVO(scrollView: UIScrollView, _ closure: @escaping ()->Void) { let keyValueObservation = scrollView.observe(\.contentOffset, options: [.new, .old]) { _, change in if change.newValue == nil { return } closure() // キーボードを消すとか・・・ } keyValueObservations.append(keyValueObser
Getting Started with Swift Compiler Development August 23, 2017 Over the next few months, I'll be writing a guide to each section of the Swift compiler source code: swift/lib/Driver, swift/lib/Frontend, swift/lib/Parse, and so on. First, here's how I set up a workspace for building and making patches to the Swift compiler. Being able to modify, experiment with, and attach a debugger to my own copy
About the content This talk was delivered live in June 2016 at mDevCamp. The video was transcribed by Realm and is published here with the permission of the conference organizers. MVVM、MVC、VIPERなど多様なアーキテクチャデザインがありますが、どれが一番良いのでしょうか。この講演では良いiOSアプリアーキテクチャを構成するためにどのような要素が必要なのかを見ていきます。 導入(0:00) New York Timesで働いているKrzysztof Zabłockiです。オープンソースまたは私が作ったFoldifyアプリを通じて私の名前を聞いたことがある方がいるかもしれません。もしかしたらObjectiv
Xcode 9 betaがリリースされ、Swift 4(とSwift 3.2)の足音が聞こえてくる。このタイミングで、今こそSwiftを学ぼうと考えるのは、なんら不思議なことではない。しかしながら、いざSwiftを学ぼうとしても、どうするのがよいのか、最初は見当もつかないことだろう。ではプロフェッショナルとしてSwiftを利用しているプログラマーたちは、どのようにして学んできたのだろう。 学び方は人それぞれであり、正解はないと考えている。 私の場合は、最初にざっくりと学び、手を動かして慣れ、ようやっと体系的に学ぶという手順を踏むことが多い。 最初のフェーズでは、何が出来るか自分の道具箱には何が追加されるのかと知るためであり、次のフェーズは実際に道具を使ってみて使い方を覚えるフェーズと言える。 そうして道具箱全体が見渡せるようになってきたところで、体系的に学ぶことで効率良く学ぶことが出来ると
引き続きWWDC 2017に参加中のかっくん(@fromkk)です。 今朝聴講した What's New in Foundation というセッションで発表されていたSwift 4からFoundationに採用される Codable プロトコルに感動したので簡単に紹介したいと思います。 定義 プロトコルの定義はこんな感じです。 public protocol Encodable { public func encode(to encoder: Encoder) throws } public protocol Decodable { public init(from decoder: Decoder) throws } public typealias Codable = Decodable & Encodable 前提 この様なデータをダウンロードする事を想定しています。 { "hell
This entry is for Japanese speaker. Those who are interested to contribute R.swift, please refer to this doc これはiOS Advent Calendar 2016の12/3の記事です。 Swiftでprintlnを書いてハマるレベルのエンジニアが一週間(実稼働時間 約8時間)でR.swiftにコントリビュートしたお話。(だったけど、メンテナさんが別プロジェクト始めちゃってまだマージされていない。-> この記事の翌日2016/12/04にマージされましたー!) Swift開発している人にとっては常識な話が多数だと思いますが、Android開発やKotlin触っていて、Swiftもやってみたい!とかSwiftのライブラリ開発してみたい!という人向けです。R.swiftのコントリビュート
All slide content and descriptions are owned by their creators.
About the content This talk was delivered live in September 2016 at try! Swift NYC. The video was recorded, produced, and transcribed by Realm, and is published here with the permission of the conference organizers. When Saul Mora last talked about functional programming, we saw by using small, micro functions, a nasty, complex and hard to track function could eventually be written as a pipeline o
About the content This talk was delivered live in September 2016 at try! Swift NYC. The video was recorded, produced, and transcribed by Realm, and is published here with the permission of the conference organizers. Rob Napier has been to Monad, to the Functor of Doom. He has seen the map, flattened and lensed. He has folded the infinite, lifted a Maybe, and he would do it all over again. But from
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く