タグ

2018年2月21日のブックマーク (6件)

  • [LLVM/Clang] LLVM/Clangを知る【はじめに】 | DevelopersIO

    LLVM/Clang iOSアプリケーション開発においてなくてはならない重要な技術の一つです。 普段ほとんど気にする人はいないかと思いますが、Xcodeで開発する上で、裏側の処理はどうなっているかを少し覗いてみます なぜLLVM/Clang? Androidでも実験的にARTなどLLVMを基盤にした技術が導入され始めているため、モバイル・アプリケーション開発にこれからも関わる気があるならば少し基盤の方も知っておいた方が良いかと思った次第です。 まあ、ほぼ趣味ですが。 参考書籍 以下の書籍がさくさく読める内容であったため、LLVM/Clangに興味を持つきっかけになりました。 レビューはえらい書かれようですが、コンパイラに関する基礎知識がある程度あれば、LLVM/Clangのエッセンスについて広く知ることが出来ました。コンパイラの動作やどのようにコンピュータが実行可能なファイルに変換されるの

    [LLVM/Clang] LLVM/Clangを知る【はじめに】 | DevelopersIO
  • Objective-Cで例外処理を行う - Code Log

    例外とは、コードが予期しない事態が起きた時に、処理を止めずに進めるための仕組みです。 予想外の入力を受け取った時なども、例外をキャッチすることで、後続の処理へと進めることができます。 たとえば・・・ NSMutableArray *array = [[NSMutableArray alloc] init]; [array insertObject:[[NSNumber alloc] initWithInt:100] atIndex:0]; [array insertObject:[[NSNumber alloc] initWithInt:200] atIndex:1]; [array insertObject:[[NSNumber alloc] initWithInt:300] atIndex:2]; NSLog(@"%d¥n",[[array objectAtIndex:3] intVa

    Objective-Cで例外処理を行う - Code Log
  • iOSアプリでMockを使ってUnitTestを書く - Qiita

    VIPERやClean Architectureなどでは当然されていますが、UTをするためにはProtocolを用いて各レイヤー間の依存度を下げテストをしやすくする必要があります。 テストしにくい(依存度が高い)コード class BookmarkViewModel { let model = BookmarkModel() var bookmarks = [Bookmark]() // DBからブックマーク一覧を取得 func loadBookmarkList() { bookmarks = model.load() } // DBからi番目のブックマークを削除 func deleteBookmark(at index: Int) { model.delete(at: index) } } このコードではBookmarkViewModelはBookmarkModelに依存しているため、

    iOSアプリでMockを使ってUnitTestを書く - Qiita
  • Swift class と struct の違い/使い分け | Ardito Tech Blog

    Swiftでは、class(クラス)とstruct(構造体)の2つがよく似た機能を持つため どちらを使うべきなのか悩む場面があります。 この2つの違い、そしてどのように使い分けたらいいのかを纏めてみます。 2つの違い まず、大きな違いは以下の2点です。 classは参照渡し、structは値渡し class MyClass { var a: Int init(value: Int) { a = value } } struct MyStruct { var a: Int init(value: Int) { a = value } } let myClassA = MyClass(value: 10) var myClassB = myClassA myClassB.a = 20 // myClassA.a = 20, myClassB.a = 20 let myStructA = MyS

  • Swiftのクラスと構造体の使い分けについてのメモ - Qiita

    上記の中で特に意識すべきところは、 変数に入れるときに「参照型/値型」のどちらになるか。 クラスは、参照型なので、参照を渡すだけだが、 構造体は常にコピーを渡す。 構造体を使うパターン 小さくて単純なデータをカプセル化をしたい場合 参照渡しより値渡し(コピー)がいい場合 継承が必要ない場合 構造体を避けた方がいいパターン データが大きい プロパティが多い 理由としては、以下の2つ 構造体は変数にセットする度にコピーされるため、データが大きいと処理時間が遅くなる 構造体はスタック領域に確保されるため、データが大きいと溢れる可能性が高くなる なので、APIDBの取得データなどは構造体ではなく、クラスで作成したほうがよさそう 結論としては、 プロパティが数個のもので、カプセル化させると扱いやすいケース メソッドはそのデータの加工を行うような場合に実装する 例えば・・・ イベントの開催日時と終了

    Swiftのクラスと構造体の使い分けについてのメモ - Qiita
  • [日本語Alexa] スマフォで録音した音声をEchoで再生するスキルを作ってみました。 〜家族の伝言板〜  | DevelopersIO

    1 はじめに Alexaのスキルでは、SSMLのAudioタグを使用して音声ファイルを再生することができます。今回は、スマフォで録音した音声をスキルで再生することで家族で使用する伝言板(ほとんど留守番電話)を作成してみました。 外出先では、スマフォで伝言を入力します。自宅でスキルを起動すると、「溜まっている伝言が聞ける」という感じです。 下記は、スキルが動作している様子です。 家族の伝言板 〜スマフォで録音してEchoで再生する〜 2 構成 構成は、概ね以下のとおりです。 iPhoneで録音した音声ファイルは、S3で管理されています。iPhoneで利用されるAudioファイルは、通常.cafなのですが、iPhoneで.mp3を扱うのがちょっと手間なので、S3に保存するところまで.cafのまま行っています。 スキルが起動されると、S3上の.cafを一覧し、まだ、.mp3に変換されていないもの

    [日本語Alexa] スマフォで録音した音声をEchoで再生するスキルを作ってみました。 〜家族の伝言板〜  | DevelopersIO