タグ

ブックマーク / blog.fenrir-inc.com (11)

  • あなたのメソッドはどこから? Protocol「私は…」

    アプリケーション共同開発部のしみずです。 このブログを読んでいるみなさんならSwift好きですよね?ということは、Protocolも好きですよね? では、Protocolのメソッドがどのように呼び出されるのかご存知でしょうか? 今回は、Protocolに関して一度は見たことや嵌ったことがあるかもしれない事例と、その原因の考察をしてみたいと思います。 事例 最後の行では、S structのインスタンスを渡しているのにも関わらず、P protocolのmethod()が出力されています。 これの解決方法は、P protocolの定義体に”func method()”を含めることですが、ではなぜ、P.method()が実行されるのでしょうか? それはextensionメソッドは、Static Dispatchだからです。 Swiftで利用されるディスパッチの種類 ここでディスパッチについて整理

    あなたのメソッドはどこから? Protocol「私は…」
    koogawa
    koogawa 2018/04/26
  • iOS 11 で Safari View Controller の Cookie 等の共有機能が無くなる (予定)

    こんにちは、アプリケーション共同開発部の中澤です。 iOS 9 から登場した Safari View Controller (SFSafariViewController) は、 Cookie 等のデータが Safari と共有される Web ビューとして認知されています。 この仕様によって各種 Web サービスのログイン状態等も共有され、それによってユーザーはそれぞれのアプリで認証が容易になっていました。 しかし、 iOS 11 ではその仕様が変わり、 Safari や各 iOS アプリで表示される Safari View Controller は、Cookie やローカルストレージ等データをそれぞれ別の場所に保存するようになると、 WWDC 2017 にて発表されました。 以下、その発表があった What’s New in Safari View Controller からの引用です。

    iOS 11 で Safari View Controller の Cookie 等の共有機能が無くなる (予定)
    koogawa
    koogawa 2017/07/07
    なんか不便だなぁ、と思ったらこういうことだったのか😩
  • Settings.bundle でデバッグ向け設定を追加する

    Settings.bundle を作成 特定のビルド設定で Settings.bundle を削除するようなビルドスクリプトを追加 ビルド設定にユーザー定義変数を定義 適宜、UserDefaults の任意の値を参照するようなコードを追記 方法 こちらのドキュメントを参考に Settings.bundle を作成 ビルドスクリプトを追加 Xcode のメニューバーから ”Project” > ”New Build Phase” > ”New Run Script Build Phase” をクリック 出てきたウインドウに以下のようなスクリプトを記入 if [ "${DELETE_SETTINGS_BUNDLE}" == 1 ]; then rm -Rf "${TARGET_BUILD_DIR}/${FULL_PRODUCT_NAME}/Settings.bundle" fi ユーザー定義変

    Settings.bundle でデバッグ向け設定を追加する
    koogawa
    koogawa 2016/10/07
  • MapKit の地図に自作のピンを表示する

    携帯端末の強みの一つとして、GPS 機能があります。その位置情報の活用方法としては様々なものがありますが、代表的なものは地図表示ではないでしょうか。iOS の MapKit にはデフォルトで位置を表示するピンが用意されていますが、最近自作のピンを設定する機会があったので、その方法について書きたいと思います。 MapKit のざっくりとした使い方 MapKit を使うにあたってのざっくりとした流れは MapKit.framework を追加 MapKit/MapKit.h を import MKMapView を作成し、MKMapViewDelegate で制御 となります。 MKMapView およびそのサブクラスという意味で、以下マップビューと呼ぶことにします。同様に、MKAnnotationView およびそのサブクラスという意味でアノテーションビューと呼ぶことにします。 マップビュー

    MapKit の地図に自作のピンを表示する
    koogawa
    koogawa 2014/04/29
    centerOffset プロパティで調整できた!annotationView.centerOffset = CGPointMake(-10, -10);のようにマッピング位置をいじれるみたい
  • 今最も注目されている設計手法!MVVM を Android アプリ開発に取り入れてみた

    こんにちは。共同開発部開発担当の北川です。 クロスプラットフォームなアプリ開発では Xamarin の使用はビジネスロジックの共通化が可能となり非常に効果的です。 すべてのアプリを単一の言語(C#)で実装することができる点だけでも魅力的ですが、MVVM 設計によりその再利用性を高めている点こそがその真価を発揮しているとも言えます。 私は Xamarin でのアプリ開発を通して MVVM 設計のすばらしさを経験してしまいました。もう後には戻れません。 Java や Objective-C でのアプリ開発でも MVVM 設計は開発スピードと品質確保を両立するために有効であるはずです。 今回は Android アプリ開発(Java)で MVVM を使うとどうなるか、紹介してみたいと思います。 MVVM 設計について MVVM 設計ではビジネスロジックを Model が担当し、ViewModel

    今最も注目されている設計手法!MVVM を Android アプリ開発に取り入れてみた
    koogawa
    koogawa 2014/04/04
  • Conference With Developers 2 に参加してきました #confwd

    こんにちは。開発担当の福井です。 2/1 に開催された Conference With Developers 2 に参加してきました。 以下のエントリが非常によくまとめられていますので、詳しくはそちらをご覧いただくとして、発表内容で私が気になったところを簡単にふり返ってみます。 Conference With Developers 2に参加してきました #confwd | Developers.IO Conference With Developers 2 #confwd に参加してきたよ – koogawa blog Conference With Developers は日の iOS 関連のカンファレンスイベントでは最大規模のイベントです。 私は普段 Cocoa 勉強会関西(日Cocoa 界隈では最古参の勉強会のひとつです)という会にちょくちょく参加していますが、多くても50人

    Conference With Developers 2 に参加してきました #confwd
    koogawa
    koogawa 2014/02/03
    フェンリルさんによるまとめ!
  • UIKit とスレッドのお約束

    アプリが小気味よく動くようにするために、メインスレッドでの重たい処理を避けて、適宜バックグラウンドスレッドに処理を回すことはよくあります。 このとき注意が必要なのは、バックグラウンドでの処理結果を画面に反映させる時の以下のお約束です。 UIKit のオブジェクトはメインスレッド以外からアクセスしてはいけない Apple のドキュメントとしては Cocoa Fundamentals Guide に “All UIKit objects should be used on the main thread only” と書いてあります。この制限は UIKit 特有ではなく、Java の Swing などでも共通の設計です。GUI のパフォーマンスを良くするために、スレッドセーフをあえて捨てて単純化しているのです。 ではどうすれば良いのかと言うと、バックグラウンドスレッドからメインスレッドに処理を

    UIKit とスレッドのお約束
    koogawa
    koogawa 2013/11/23
    試しにメインスレッド以外からUIKitにアクセスしてみたらクラッシュはしなかったけど、やたらと描画が遅かった
  • NSProxy を使って UIWebView のイベントハンドリングをフックする

    こんにちは。開発担当の福井です。 突然ですが、みなさん NSProxy をご存じでしょうか? NSProxy は Foundation の中で唯一 NSObject を継承しないクラスです(NSProxy のサブクラスを除く)。 また、その実装はほとんどありません。 今回はその NSProxy を使って view に対するメソッド呼び出しをフックしてみようというお話です。 NSProxy の使い方 名前からも推測できるように、NSProxy は Proxy パターンを実現するためのクラスです。 メッセージの呼び出しが動的に解決される Objective-C において Proxy オブジェクトを実現するのは実に簡単です。 NSProxy は、ただ自身に送られたメッセージを、そのまま別のオブジェクトに受け流すことで Proxy としての機能を実現します。 Proxy オブジェクトを作ってみる

    NSProxy を使って UIWebView のイベントハンドリングをフックする
    koogawa
    koogawa 2013/11/20
  • 【iOS】UIWebView Hacks 〜ブラウザ開発テクニック〜

    こんにちは。 Sleipnir Mobile for iPhone / iPad 開発担当の宮です。 調べてみると、Sleipnir Mobile の最初のコミットは 2010年9月6日で、もう3年近く開発しているようです。最初はこんな貧弱な API でブラウザなんて作れるわけ無いと思っていましたが、なんとかなるものですね。今では多くのユーザーさんに使っていただけるプロダクトになりました。 今回は、この3年間で、使ってきた UIWebView の技を紹介したいと思います。詳細な方法については書きませんが、UIWebView で何ができて何ができないのかはわかるかと思います。それぞれの詳細なやり方については機会があれば書いていきたいです。 目次 長くなりそうなので、目次を用意しました。 余裕があればアップデートするので、ブックマークでもしておいてください。 UIWebView の API

    【iOS】UIWebView Hacks 〜ブラウザ開発テクニック〜
    koogawa
    koogawa 2013/07/12
  • 【iOS/Mac開発】超サクサクアプリへの必須ツール Instruments を使いこなそう

    こんにちは。iOS / Mac 開発担当の金内です。 使って幸せなアプリには、サクサクとした動きが欠かせませんね。自分たちで作っているアプリが「サクサク」でなく「もっさり」と言われてしまうと残念な気持ちになりますが、反面「よし。こうなったら超最適化して超サクサクなハイパフォーマンスアプリを目指す!」と誓いを立てるよい機会でもあります。 そんな誓いを立てたあなたにピッタリのツールが Xcode に付属している Instruments(インストゥルメンツ)です。フェンリルのウェブブラウザ Sleipnir for Mac や Sleipnir Mobile for iPhone / iPad の開発でも大活躍しています。 Instruments は、一般的にはプロファイラという種類のツールにあたります。プロファイラは、どのオブジェクトがどれくらいメモリを消費しているとか、どのメソッドにどれくら

    【iOS/Mac開発】超サクサクアプリへの必須ツール Instruments を使いこなそう
    koogawa
    koogawa 2013/04/20
  • Xcode 4 でデフォルトになった LLVM って何?

    こんにちは。開発担当の金内です。 Xcode 4 は UI もすっかり変わりましたが、ビルドの要であるコンパイラもデフォルトが変更されています。その新しいコンパイラのキーワードが「LLVM」です。いまいち聞き慣れない方もいると思うので、今回はその LLVM について簡単にご紹介します。 ざっくりとした結論から言ってしまえば、Xcode における LLVM は従来のデフォルトコンパイラである GCC を置き換えるものです。LLVM には次のような特徴があります。 ・コンパイルが速い ・コンパイルされたコードが速い ・エラーメッセージがわかりやすい ・他のツールと連携しやすい いいことばかりですね。 しかし、コンパイラは要となる重要なコンポーネントなので、互換性などへの配慮から、Apple は GCC からの移行を少しずつ段階的に進めています。 実際、Xcode 4.0 でのデフォルトは完全に

    Xcode 4 でデフォルトになった LLVM って何?
    koogawa
    koogawa 2011/08/21
  • 1