ブックマーク / akisute.com (9)

  • Auto Layout と Manual Layout を混載させるときに役立つ UIView.translatesAutoresizingMaskIntoConstraints プロパティの話

    Auto LayoutがiOS 6で導入されてはや4年、未だによく理解していなかった挙動に UIView.translatesAutoresizingMaskIntoConstraints があります。このプロパティは自分がプログラムコード上で生成したviewをAuto Layoutするときにfalseにする必要があるものということで皆様記憶されているかと思うのですが、具体的にこのプロパティは何をやっているのかが個人的に全く謎でした。それが今日一つ謎が解けましたのでここに共有させていただきたいと思います。 UIView.translatesAutoresizingMaskIntoConstraintsの値がtrueのときとfalseのときの違いについて以下に記載します(iOS 8以上で確認しています)。 trueのとき 対象のviewのframe、すなわちx, y, width, heig

    Auto Layout と Manual Layout を混載させるときに役立つ UIView.translatesAutoresizingMaskIntoConstraints プロパティの話
    hedjirog
    hedjirog 2016/07/01
  • Xcode 7.2 の LLDB で Swiftのデバッグをするコツ

    現在のXcode 7.2でSwiftを使ったiOSアプリのデバッグをするときのコツみたいなものをまとめました。将来的にはより良くなる可能性はあります。というか良くなってほしいです(´・_・`) ■LLDBbreakした地点によって挙動が変わるまずハマりどころがこれですが、現在のLLDBbreakした地点で実行されていたコードがSwiftのコードかC言語系のコードかによってモードが変わります。 // Objective-C mode (lldb) po [someObject property] // Swift mode (lldb) e someObject.property Objective-Cモードの時にSwiftっぽい呼び出しをしたり、その逆をしてもまともにLLDBは動作しません。なので現在自分がどちらのモードのLLDBにいるのかを判断するのがキモになります。 ハマりどころと

    Xcode 7.2 の LLDB で Swiftのデバッグをするコツ
  • ReactiveCocoa を Swift から使ってみた(2) KVO編

    前回の記事から引き続き、ReactiveCocoaを触ったりしています。FRPの概念に慣れてくると通常のプログラミングスタイルでは得られない知見に遭遇出来てなかなか面白いです。 今回はまずSwiftReactiveCocoaを学ぶときに参考にするドキュメントについてご紹介したいと思います。といってもSwiftに特化したドキュメントはほとんど存在しないため、Objective-CでReactiveCocoaを学ぶときのドキュメントを見て学ぶしか無いのが現状です。 私は個人的にはサンプルコードを直接触るほうが性に合っているようなので、以下のオープンソースのReactiveCocoaで作られたアプリのコードを見ています。 https://github.com/AshFurrow/C-41 https://github.com/jspahrsummers/GroceryList GroceryL

    ReactiveCocoa を Swift から使ってみた(2) KVO編
    hedjirog
    hedjirog 2015/01/19
    こっちも参考になりそう https://github.com/ashfurrow/Swift-RAC-Macros
  • Silent Push / Background Fetch 時の fetchCompletionHandler に渡す引数ごとの挙動の違いを調べてみた

    Silent Push / Background Fetch 時の fetchCompletionHandler に渡す引数ごとの挙動の違いを調べてみた 2014/09/10追記: 追加調査によって判明した事項を追記しています。 iOS 7から追加されたPush通知によるバックグラウンド処理機能 (Silent Push) および定期的なバックグラウンドフェッチ機能 (Background Fetch) ですが、これらの機能はバックグラウンド処理が完了したタイミングでいずれもfetchCompletionHandlerにUIBackgroundFetchResult型の値を渡すような設計になっています。 ちょっと調べれば、大体どこの解説サイトにも以下のように説明があります。 UIBackgroundFetchResultNewData 新しいコンテンツの取得に成功し、新しいデータが存在した

    Silent Push / Background Fetch 時の fetchCompletionHandler に渡す引数ごとの挙動の違いを調べてみた
    hedjirog
    hedjirog 2014/08/26
  • Apple Push Notification (APN) 使用時の delegate の挙動について、 iOS 7以降 / iOS 6以前の差をまとめた

    Apple Push Notification (APN) 使用時の delegate の挙動について、 iOS 7以降 / iOS 6以前の差をまとめた iOS 7以降とiOS 6以前で、俗にいうリモートPush通知の受け取り方と受け取った際の挙動がまるで違っているので、最近リモートPush通知を実装した時につまづいた箇所をまとめてみました。 使用するdelegate methodの違い いかなる種類のPush通知においてもapplication:didReceiveRemoteNotification:fetchCompletionHandler:を使用します。 application:didReceiveRemoteNotification:fetchCompletionHandler:とapplication:didReceiveRemoteNotification:が両方実装され

    Apple Push Notification (APN) 使用時の delegate の挙動について、 iOS 7以降 / iOS 6以前の差をまとめた
    hedjirog
    hedjirog 2014/08/12
  • iOS 開発者が Android 開発者になるために用意したものまとめ

    これまでiOS 2.0の登場から今日に至るまでiOS開発者として仕事してきたわけですが、今年はいよいよ格的に仕事Androidの開発を行っていきたいと思っています。そこで正月休みを使って準備したAndroidの開発環境や勉強用の資料をまとめてみました。同じく今年からAndroidやってみよう!という方の助けになればと思います。 ■前提条件 まず最初に前提条件として筆者のスペックをまとめてみました。 iOS開発歴4年ぐらい (iOS 2~7) Android開発歴半年ぐらい (Android 1.5~2.1の間、仕事では殆ど使ってない) Java歴は3年ぐらい (大学時代と最初の会社でSIerをやっていた間、SJC-P所持だがJava 7とか8とかはわからない) iOSの開発歴が長く、モバイル開発で必要な要素や落とし穴などをひと通り踏んでいること、少しですがAndroid開発歴があること

    iOS 開発者が Android 開発者になるために用意したものまとめ
  • ユビレジを支える技術

    年末にユビレジさんのところでちょっと仕事のお手伝いをさせていただいたので、その時の内容をご紹介させていただきます。 ■ユビレジって何? iPadをキャッシュレジスタに変えてしまうサービスです。会計からレシートの印刷までやってくれます。最近飲店などでレジがなくiPadだけが置いてあるお店などを散見するかと思いますが、アレがそうです。一般的なキャッシュレジスタ+店舗システムよりもはるかに安価で導入でき、しかも使いやすいというのがウリです。 開発者的に言うと、Scalaモヒカンの@kmizuさんやiOSモヒカンの@k_katsumiさんなどが在籍されていまして、エンジニアのレベルが高いです。 ■開発スタイル 少人数のため、厳密なウォーターフォール管理やアジャイル/スクラムなどは無く、チケット/Issueベースの開発になっています。githubをフル活用します。すべてPull Request(以

    ユビレジを支える技術
    hedjirog
    hedjirog 2014/01/19
  • Xcode 5 で、発生した NSException の詳細が表示されない時の対処法

    原因がよくわからないのですが、iOSアプリをデバッグ中にNSExceptionが発生してアプリがクラッシュしてしまった時、その詳細がXcodeのコンソール上に表示されなくなってしまいました。普通はデフォルトのexception handlerがうまい具合にやってくれるのですが、何らかの理由でそれがうまくいかない場合があるようです。自分でスレッド立ててるとかでしょうか・・・ 上図のように、例外が発生している箇所にブレークポイントをおいてどこで発生したのかを知ることはできるのですが、実際には発生箇所がわかっても発生原因がさっぱりわからないというケースもあります。例えばiOSのシステムが例外を発生させたときや、コードが公開されていないライブラリが例外を発生させたときなどです。 さて、このようなときは発生しているNSExceptionのdescriptionを直接読めれば便利そうです。というわけで

    Xcode 5 で、発生した NSException の詳細が表示されない時の対処法
  • 「モバイルアプリのバックエンド(Web API)に特化したサービスのまとめ」のその後(2013年版)

    1年ほど前にモバイルアプリのバックエンド(Web API)に特化したサービスのまとめというBaaSサービスについて非常に丁寧にまとめた記事が公開されていたのをつい最近知ったのですが、公開から1年が経ちBaaSサービス周りも統合再編が起きているようなので誠に勝手ながら2013年版を引き継いて書いてみようかと思います。 まずBaaSについて基的なところはlaisoさんの元記事が素晴らしく良くまとめてくださっていますのでそちらを参照してください。 2013/05/16追記: こちらのSlideshareにも2013年現在のBaaSサービスを取り巻く状況が非常に丁寧にまとめられていますので、オススメです。 2013年のトレンド まずは元記事で上がっていたBaaSサービスの名前を片っ端からGoogleトレンドに突っ込んでみて人気度を評価してみました。その他、2013年になって登場してきたサービスが

    「モバイルアプリのバックエンド(Web API)に特化したサービスのまとめ」のその後(2013年版)
    hedjirog
    hedjirog 2013/05/16
  • 1