Find my weekly Swift articles on swiftbysundell.com. I’m no longer publishing on Medium.
この投稿は「Swift Advent Calendar 2016」 8日目のものです。 今日が火曜日だったら完璧だったのに... 今回は「あなたの知らないCollectionの世界」というテーマでお送りします。 環境 Xcode8.1 Swift3.0.1 そもそもCollection (protocol) って (シーケンスの持つ)要素(element)が複数回、非破壊的に走査することができて、インデックスされた添字によってアクセスできるシーケンス のことを指すようです。(ちょっと訳が怪しい... ) 普段何気なく使っているArrayもこのCollection(正確には MutableCollection protocolですが) に適合しています。DictionaryやSetなんかも。 Collection protocolの継承図 Collection 自体は、 Indexable
最近似たようなタイトルの記事が投稿されていますが、それとはまた別のお話ということで。 Xcode8になってからなんとなくswiftのビルドが遅い...なんとかならないかということで探していたら、 こちらのstackoverflowに行き着きました。 どうやら、User-Defined マクロに SWIFT_WHOLE_MODULE_OPTIMIZATION=YESを追加してあげると良いよということで試してみました。 ↓ 試した結果、 普段の約半分 くらいでビルドが終わるようになりました。 (自分のProjectだと、370秒ほどかかっていたのが、174秒まで縮まりました。) ただ、普段は差分ビルドが働く分困っていなかったので、今はCI環境の開発版の書き出しで有効にして試運転しています。 まだしっかり確認はしていないですが、ちょっとコードに変更があったときに早いけど同じだけ時間かかりそうな感
お久しぶりです。iOSエンジニアのすーです。 チームメンバーがFirebase、Realm Mobile Platformであれこれ試行錯誤しているのに触発され、遅れてのスタートですが僕もFirebaseのRemoteConfigについて触っていくことにしました。 今回はFirebase RemoteConfig × Swiftなお話です。 (※ Xcode 8,Swift 3時点のものです。) Pickup: techblog.timers-inc.com techblog.timers-inc.com RemoteConfigってどんなの? Remote Configとは、Firebaseで提供されているサービスの1つで、クラウド上で値を設定し、それをネイティブ側から設定値をフェッチして動的にアプリ内の数値等を変えることができるものです。 また、セグメントや細かい条件設定によって設定値
Swift2まで メインスレッド上からdispatch_syncでメインキューに突っ込もうとするとデッドロックしてしまうことがあり、Swift2まではだいたい以下のような書き方で対応していたと思います。 public func dispatch_sync_main_safe(block: dispatch_block_t) { if NSThread.isMainThread() { block() } else { dispatch_sync(dispatch_get_main_queue(), block) } } Swift3から Swift3ではdispatch_xxxという関数での使用の仕方から、DispatchQueueクラスを使った書き方に変わったのもあり、以下のように書き換えたらいいんじゃないかなと思います。 extension DispatchQueue { class
おばんです、通っている武術教室の打ち合い練習で先生の基本攻撃力が高くて、良いところに入ったわけでもないのに痛みにもだえる田中です。「基礎防御力!人生の基本でしょう!?」、と田舎の女の子に怒られる声が聞こえるので筋トレします。 今日はSwift3のtypealiasにジェネリクスが使えるようになる話です。 参照元は以下です。(以降このリンク先を「公式」と差してブログを書いていきます) swift-evolution/0048-generic-typealias.md at master · apple/swift-evolution typealiasにジェネリクスが使えるようになるとは 公式のMotivationに書いてあることとしては以下があります。 Generic typealiases are an obvious generalization of the existing Swi
(追記) 正しい使い方は @mono0926 さんがこちらにて書いていますのでそちらへどうぞ Swift 3 以降の NotificationCenter の正しい使い方 回れ右。 ※以下の内容は一応アーカイブとして残しておきますが、良き使い方ではないのでご了承くださいませ。 Swift3.0で変わったNSNotificationCenter Swift2からSwift3に変わって、Foundation系にも手が加えられ、 NSNotificationCenter 周りにも変更がありました。 Swift2.2とSwift3.0でaddObserveする場合の同じ処理を見比べてみます。 class Hoge { @objc func doSomething(notification: Notification) { // ... } } NSNotificationCenter.defaul
問題点の整理 UIView のサブクラスを書いている時などで初期化の為に一回だけ処理したい場合があったとします。例えば、UIViewController を使うときは、 viewDidLoad() に色々な初期化の為のコードをかけば、view が生成されてから一度しか呼ばれません。よって、UIViewController を使っている場合には、ここで、Gesture Recognizer を生成登録したり、複雑なサブビューをコードで生成したりする場合は非常に便利です。 class MyViewController: UIViewController { func viewDidLoad() { super.viewDidLoad() // さまざまな初期化のコード } } ところが、さまざまな大人の事情により、これらと同等なコードを UIView のサブクラスに持ってくる場合には、どうすれ
iOSエンジニアのすーです! あちらこちらでWWDC2016ネタで盛り上がっている中、それとは関係のない記事を投稿させて頂きます...! 現在弊社のFammでは、もともとObjective-C Onlyで書かれたプロジェクトでしたが、 新規機能は基本的にSwiftで書くようにして、少しずつ既存のコードをSwift化することで、Swiftがプロジェクト全体の約45%を占めるようになりました。 そこで浮上してきた問題が、 ビルド時間 です。。 差分ビルドが有効とはいえ、開発中のブランチを行ったり来たりしたり、ちょっとObjective-C側のコードを書き換えたりしてタイミングが悪いと差分ビルドが働かずまた一からSwiftのソースコードをコンパイルしてってなって...。 まだ、自分の使っているマシンの性能が良い方なので、そこまで気にはならないのですが、これがCI環境となるともっと悩ましいことにな
Swift3.0でautoreleasepoolが強化されたようなので。 はじめに Swift3.0-preview1時点でのお話となります。 Swift3時代のautoreleasepool Swift3時代のautoreleasepoolでは、いままでできなかった2つのことが可能になります。 値を返却することができる エラーハンドリングができる それぞれ順に見ていきます その前に autoreleasepoolは以下のように宣言されています。 public func autoreleasepool<Result>(_ body: @noescape () throws -> Result) rethrows -> Result Generics 、 @noescape 、 throws,rethrows が使われています。 ちなみに、Swift2時代までは、 public func a
About the content This content has been published here with the express permission of the author. Testing view controllers isn’t as hard as people think. Using Quick, Rachel Bobbins shows how useful testing can be, covering different testing patterns she and her team use such as buttons triggering network requests, handling successful and failing response cases, and properly presenting other view
おはようございます。シニアアプリケーションエンジニアの id:cockscomb です。WWDC が目前に迫ったいま、今秋にリリースが予定されている Swift 3.0 について、Swift OSS コミュニティの中心である Swift Evolution から読み取っていきたいと思います。 [PR] 本記事は、筆者が株式会社はてなの協賛を得て主催した「関西モバイルアプリ研究会 #14」において、“Swift Otaku — Nerdy Swift-Evolution Watching” と題して発表したものをブログの記事として再構成したものである。 関西モバイルアプリ研究会は、毎月一度、平日夜に京都や大阪で開催される、モバイルアプリ関連の勉強会である。次回の「関西モバイルアプリ研究会 #15」は6月22日水曜日に開催予定だ。 目次 Focus Winding Down Complete
About the content This talk was delivered live in April 2016 at App Builders. The video was transcribed by Realm and is published here with the permission of the conference organizers. “How can I use protocol-oriented programming in my everyday coding?” Natasha tackles this question and focuses on the practical applications for POP including Views, View Controllers, and Networking. Follow along wi
iOS10の UserNotifications Framework で、UNNotificationの状態と、通知の削除についてさっとまとめてみました。 若干言い回しが曖昧かもしれませんが、ご了承ください。 実行環境 Xcode8 beta (Swift 3.0 preview-1) 情報としては、Apple Developerで公開されている情報を基にしています。 また、まだBeta段階ですので、今後変わる可能性はあります。スクリーンショットは掲載しておりません。 通知の状態 通知には、PendingとDeliveredの2つの状態があります。 Pending : 通知がまだ発火していない状態 Delivered : 通知が発火したが、まだユーザーが見ていない(タップしたりしてdismissしていない)状態 UNUserNotificationCenterに、UNNotificatio
そういえば1ヶ月ほどブログの更新止めちゃってました。お久しぶりです。 WWDC2016の発表を現地…ではなくweb上で色々情報をキャッチアップしてて、その中で 「UserNotifications Framework」 が気になったのでざっくり触ってみました。 今回は、通知(ローカル通知)にattachmentで任意の画像や動画を付けられるようなのでそれを試してみました。 実行環境 Xcode8 beta (Swift 3.0 preview-1) 情報としては、Apple Developerで公開されている情報を基にしています。 また、まだBeta段階ですので、今後変わる可能性はあります。スクリーンショットは掲載しておりません。 通知に画像を付けてみる 例えば、Project内に追加した、 “img.png” という画像を通知に付加してみます。 contentを作成する まず、通知の内容
Implemented proposals for Swift 3 SE-0002: Removing currying func declaration syntax カリー化関数宣言構文を削除 func foo(x: Int)(y: Int) の有効性は限定的で、実装が複雑になるから削除する必要があります。 サンプル // Before: func curried(x: Int)(y: String) -> Float { return Float(x) + Float(y)! } // After: func curried(x: Int) -> (String) -> Float { return {(y: String) -> Float in return Float(x) + Float(y)! } } SE-0003: Removing var from Function
こんぬづは、ラブライブ!の真姫ちゃんを愛しています田中です。 弊社主催のAKIBA.swiftの第二回が2016/05/30に開催されました! 今日はそのまとめをお送りします! 第二回のテーマ 第2回はSwiftとObjective-Cの文法比較をテーマにお届けします! Swiftの登場により、iOS開発はこれまでのObjective-Cのみによる開発からさらに幅を広げることとなりました。 SwiftとObjective-C、それぞれの文法を知ることでより良いiOS開発をしていきましょう。 はじめに 司会担当の弊社田宮から初めのあいさつとタイムテーブルの説明等がありました。 第一回開催より落ち着いた様子の田宮さん 「Swiftの型システム」 平川 剛一さん@GyazSquare 概要 SwiftはObjective-Cと異なり、型安全な言語である。本発表では、この型安全性を保証するためにS
こんにちは、iOSエンジニアのちぎらです。 SwiftでStructのデータを永続化したい時、どうしたらいいでしょう。Classに書き換えてNSCodingに準拠させればNSDataに変換できます。でもStructは使いたいしなんか悔しいですね。Structが保持している変数をそれぞれバイト列にして繋げてしまって一つのデータにするという方法があります。方法としてはこれでいいですが、NSCodingに準拠させるよりもはるかに頭を使うし、もっと簡単にできないものでしょうか...。 StructとNSDataを相互変換するライブラリを作りました。 github.com 使い方 1. Struct を定義する // CustomArchivable プロトコルを指定 struct SampleStruct: CustomArchivable { let title: String let time
Githubのwatchで、swift-evolutionにどんな提案が追加されたのか、 accept されたのか見たりしているのですが、 最近みていて気になったものがあったのでピックアップしてみました。 SE-0068 一部の例はproposal内のものを引用したりしています。 (※この記事では完全な和訳などはしていません。要点絞って自分の解釈で書いております。) “Expanding Swift Self to class members and value types” 今まで、Selfは自分自身の型を指すものとして使われていて、特にプロトコルと相性が良いものでした。 protocol HogeProtocol { func myType() -> Self } // HogeProtocolを適応する class Fuga: HogeProtocol { // ここでSelfはその
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く