You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
はじめに Swiftで普通にObserverパターンを作ろうとすると意外に面倒じゃないでしょうか。 KVOは何かやりたいことと違うし、NSNotificationCenterはTypeSafeじゃないし、通知名の文字列を管理するのも少し面倒です。 その点AndroidのEventBusは少し動的な要素が入りますが(Methodが使われていないとWarningが出るのを抑えないといけない)、なかなかバランスが良いと感じていて好きです。 Swiftでも同じ感じで作れないかなぁと試行錯誤していたら、まあまあ良い感じで作れたのでご紹介します。 SwiftEventBusという名前のpodが既にあったので、 EventCenter と名づけました。 EventCenterの良い所 任意のObject(class/struct/enum等)をEventオブジェクトとしてpostできる Event通知を
4. プラットフォーム別の用語とこの資料の表記 iOSのclass, protocol Androidのclass, interface この資料の表記 AppDelegate/UIApplication Application Application -‐ Activity Activity UIViewController Fragment ViewController (略してVC) NSUserDefaults Preference Preference 4 5. 同期/非同期 な呼び出し-‐リターン • 「同期的な呼び出し-‐リターン」 • 呼び出し終了時に戻り値が戻ってくるタイプ • 構造上同期的であることが強制されている • 「非同期的な呼び出し-‐リターン/通知」 • callbackや通知などで制御が戻ってくるタイプ • その制御がいつ戻ってくるかは実はわからない
業務的に同一のソースコードからBundle IdentifierやAppアイコン、スプラッシュイメージが異なるだけのIPAパッケージをいくつも作る必要があった。 今までは差分ファイルを切り替えるシェルスクリプトと自動ビルドさせるシェルスクリプトを組み合わせてパッケージの数だけ再ビルドを行っていた。 これがソースコードに変更がないのであれば既存のIPAパッケージを元に、再ビルド無しにパッケージを作ることが可能だというのでやってみた。 やりたいこと 既存のIPAパッケージを元に、 Appアイコン、スプラッシュイメージの差し替え Appタイトルの変更(Sample1 -> Sample2) Bundle Identifierの変更(com.myapp.sample2 -> com.myapp.sample2) 別のプロビジョニングプロファイルに切り替える 別の署名に切り替える 必要な物 Xcod
モバイルファースト室の @slightair です。 先日、モバイルアプリのログ収集ライブラリ「Puree」をリリースしました という記事で Puree というログ収集ライブラリを紹介しました。 Android 版につづき iOS 版もリリースしたので紹介したいと思います。 puree-ios : https://github.com/cookpad/puree-ios モバイルアプリのログ記録の難しさや、それを解決するための Puree の思想についての説明は前回の記事におまかせします。 iOS 版の Puree も Android 版と同じようにフィルタリング、バッファリング、バッチ、リトライの機能を備えています。 ログのフィルタリングや出力の振る舞いをプラグインとして定義し、それらを組み合わせることで効率的なログ収集を実現します。 Puree iOS の使い方 Puree の導入方法
はじめに CocoaPods の Swift ライブラリを使えるようにするなどでも紹介されているように、 最近CocoapodsもSwift対応がなされており、Alamofire のような有名なライブラリなども対応されてきました。 なので、自分で作ったSwiftライブラリもCocoapods化していきたいと思ったのですが、いろいろ躓いたのでその手順メモです。 まだCocoapodsのSwift対応も完全ではないので、今後手順も変わるかもしれませんが、現状の参考までに。 準備 Swift対応のCocoapodsは現時点(2014/12/24)本流のBranchにはMergeされていないので、Swift対応のCocoapods環境から準備します。 CocoaPods の Swift ライブラリを使えるようにするなどでも紹介されているように、適当なLocalディレクトリに Bundlerなどで入
iOS は タッチパネル式端末用に最適化された OS で ユーザが端末を操作しやすいように GUI の仕組みが提供されています。iOS アプリ開発では主に GUI を操作するプログラムを実装していきます。iOS の GUI プログラムはイベント駆動型と言われるプログラミング方式に則ってプログラムを実装していきます。 iOS に限らず Mac OS 用のアプリ開発でも同じようにイベント駆動型のプログラムを実装しますが、 iOS はタッチパネル式モバイル端末用の OS という性質上 Mac OS のイベント駆動プログラムと少し違うところがあります。 この記事では iOS のイベント駆動の仕組みを「ライフサイクルイベント」と「ユーザアクションイベント」にわけて説明します。iOS のイベント駆動がどういったものなのか理解してその仕組みの上で自由にプログラムできるようになることが目的です。 イベント
iOS/iPhone/iPad/MacOSX プログラミング, Objective-C, Cocoaなど Mac OS X / iOS における Frameworkの作成や利用方法について調べてみた。Framework に関しては Mac OS X 向けに下記のリファレンスが用意されている。 Framework Programming Guide: Introduction to Framework Programming Guide この内容を読みつつ調べたことを加味して Frameworkについてまとめた。 なお iOS においては Framework の仕組みはシステムでサポートされているものの、ユーザが独自の Framework を作成することは推奨されていない(ドキュメントが存在しない)。また iOSでは開発時にユーザが独自の Frameworkを作成できるものの実機への配置はで
ベース SDK と Deployment Target を設定する ベース SDK を iPhone デバイス 4.0 にします (iPad の場合は 3.2)。 iPhone OS Deployment Target をサポートする OS の最も低いバージョンにします。 (下の場合は iPhone 3.0 以降で動作する。) ベース SDK を下げるという方法もありますが(iPhone SDK では 3.2 以降の SDK しか同梱されないので無理ですが)、iPhone アプリケーションの場合、最新の SDK でビルドする方がなにかと安定します。 ですので特別に理由がない限り、リリースされている最新の SDK でビルドして、Deployment Target を下げる、ということを原則的に行なったほうがいいです。 これは今後マイナーバージョンアップがあった場合などでも同様です。 例えばこ
【3】テストの実行 次に、テストを実行する処理を追加しましょう。「ビルド手順の追加」から「シェルスクリプトの実行」を選択し、以下のコマンドを入力してください。これらのコマンドでは、iOSシミュレーターで実行できるテスト用のビルドと、テストの実施を行っています。 $ xcodebuild \ -target "KiwiSample" \ -sdk iphonesimulator \ -configuration Debug build CONFIGURATION_BUILD_DIR=$WORKSPACE/build ! $ xcodebuild test \ -scheme "KiwiSample" \ -sdk iphonesimulator \ -workspace 'KiwiSample.xcworkspace' \ -configuration Debug \ -destinatio
はじめに 「知らないと損するアプリ開発におけるStateMachineの活用法(SlideShare full版)」 という内容でクラスメソッド & ゆめみ 合同勉強会 Developers.IO Meetup 09で発表させて頂きました。 これについての要点をまとめます。 内容 StateMachineとは何か? StateMachineは簡単に言うとUMLの「状態図(ステートチャート)」の実装です。 状態図による分析・設計は、実は色々な分野で活用されていて、iOS/Android/WebApp などのクライアントアプリでは実は非常に有用なものなのです。 ただ、StateMachineの実装は真面目にやると大変です。 例えば、こんな単純な状態図でも 真面目にJavaで実装すると300行以上になります。 https://gist.github.com/mokemokechicken/9e
一つのWindowの中に、排他で表示されるUIViewを複数保持し、Flip等のアニメーションをしながら別のViewへと表示を切り替える方法です。 UIView の transitionFromView:toView:duration:options:completion: を使えば簡単。表示中のViewと切替後のViewとアニメーションと時間を指定するだけ。 デフォルトでは fromViewの方は superviewから取り除かれるので、hiddenでの制御だけにする場合には、optionsにUIViewAnimationOptionShowHideTransitionViewsを追加する必要があります。 InterfaceBuilderで2つのViewを定義し、それをhiddenの制御で切り替える場合、 以下の様に書くだけで、上から縦に0.5秒でフリップします。hiddenの管理もこの
Pagination of iOS Table Views, Android List Views and on the mobile web is a common way of circumventing the technical limitations of power hungry mobile devices and slow mobile networks when dealing with large datasets. The classic implementation of this is to expand the scrolling area when new chunks of data are fetched, either by using a "load more"-button at the bottom, or automatically as the
以前作ってGithubに公開していた CrashMonkey というツールについて紹介します。 Github:CrashMonkey CrashMonkey概要 iOSのアプリケーションをモンキーテスト(ランダムな操作をひたすら行う)するためのツールです。 動作イメージはこのデモ動画を御覧ください。 iPhone Simulatorの操作にはUIAutomationを使っていて、ベースとしてui-auto-monkeyを使わせて頂きました。 動作環境 以下の環境でのみ確認してあります。 Max OS X 10.8.4, 10.9.4 Xcode 4.6.3(Build version 4H1503), Xcode5.1.1 Ruby 1.8.7-p371 Rubyについては、1.9系, 2.0系でも動くと思います。 特徴 良い点 アプリのプロジェクト自体に変更を加えなくても実行することがで
7. (VC) ViewController Fragment View View Model En@ty En@ty En@ty Model Locator Model En@ty En@ty En@ty API API API プレゼンテーション層 ビジネス層 データ層 State Machine Local Data Access この図はアプリを作る時によく出てくるコンポーネントよ。 ここではコンポーネントという言葉を、「一塊の機能を実 現するClass群」という意味で使っているわ。(他にいい 言葉無いかな…) よく使うコンポーネント 外部サービス データソース コンポーネント コンポーネント コンポーネント コンポーネント コンポーネント コンポーネント コンポーネント 7
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く