きっかけ iOSアプリ公開の壁となっているプロビジョニング周りですが、ハマりまくったので覚えている内に図にしました。 難しくしてる理由 難しくしているのは、この辺が理由ではないかと思います。 iOS Developerサイトでの画面・操作手順がしょっちゅう変わる Xcodeも、バージョンによって画面・操作手順が変わる ということで、書籍やWebでのノウハウがすぐに古くなってしまいます。ググるといろんな情報が出てきてしまい、かえって混乱します。 また、開発時のiOSデバイスはXcode側である程度自動的にやってくれるのですが、それがかえって分からなくしているような気がします。 概念図 ということで、結局、概念を理解してしまうのがいいのではないかと思い、図にしてみました。 (より厳密に実行端末が判断されるAd Hoc配布をベースに記述) ざっくり手順(※個別の操作は省略) 鍵ペア(秘密鍵/公開
I'm testing swift with CoreData and I created the following code: import UIKit import CoreData class Contact: NSManagedObject { @NSManaged var name: String @NSManaged var email: String class func execute(){ let appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate) let context:NSManagedObjectContext = appDel.managedObjectContext! let entityDescripition = NSEntityDescripti
GDB to LLDB command map# Below is a table of GDB commands with their LLDB counterparts. The built in GDB-compatibility aliases in LLDB are also listed. The full lldb command names are often long, but any unique short form can be used. Instead of “breakpoint set”, “br se” is also acceptable. Execution Commands Breakpoint Commands Watchpoint Commands Examining Variables Evaluating Expressions Examin
iOSアプリをリリースするとユーザーの方からクラッシュレポートをいただくことがあります(感謝です!)。このファイルはアプリが突然落ちたりするときにiPhone内に自動的に作成されるもので、エラーを特定するための重要な情報源です。 ただ、解読する方法はすこし面倒なので、コンテンツにしておきます。
以前"iOS勉強会議"で少しお話した内容ですが、新しいプロジェクトを整備するタイミングがあったので、ようやくまとめてみました。 例えば、 クイズアプリでコンテンツの異なるものを別アプリとしてビルド、リリースしたい サーバと通信するアプリで、テスト用に接続先を切り替えたい といった要件の実現方法です。 TargetとConfiguration Xcodeのビルド設定には、Target, Configuration, そしてXcode4から加わったSchemeがあります。それぞれ、以下の用途で使い分けるものとします。 Target: 例えばクイズアプリでコンテンツの異なるもの、Lite版など。別アプリとしてリリースするもの。 Configuration: 接続先サーバの違い(開発サーバ/ステージング/本番)、デバッグ版/リリース版など。 Scheme: TargetをXcodeで実行するときの
iOSアプリではシングルウィンドウしかないと思われがちですが、実は随所で使われているiOSのウィンドウ「UIWindow」。 このUIWindowの知られざる登場シーンや活用法、注意点などについて、DeNAの@sintarioさんに解説レポートを寄稿していただきました。 by 馬場美由紀 (CodeIQ中の人) iOS開発における「ウィンドウ」とは? デスクトップOSであれば、一つのアプリが複数のウィンドウを同時に展開するマルチウィンドウアプリであることは、ほぼ当たり前ですよね。画面上にいくつものウィンドウを同時に開いて、並べたり切り替えたりしながら画面の広さを活かしたやり方で作業するものです。 これに対して、iOSの世界観は大きく様相が異なります。高精細なRetinaディスプレイが普及したとはいえ、iPhoneの画面はやはりお世辞にも広くはありません。一般的にiOSでは、一つのアプリが画
はじめに Xcode 5 で XCTest という新しいテストフレームワークが投入されました。OCUnitを使ったプロジェクトからのコンバートもできるので、それを置き換えるものと考えて良さそうです。また Test Navigator という新しいナビゲータが導入され、テストターゲットとの親和性が高くなっているようです。さらにコマンドラインからのテスト実行もサポートされました。 導入 何も考えなくてもプロジェクトを作成すると勝手にTestターゲットが作成されます。素敵です。 メニューからProduct -> Test 又は Command + U でテストが実行されます。Testクラス新規作成時はXCFailが1つ設定されているので必ずテストが失敗します。この辺はOCUnitと変わりません。 Test Navigator で動作させる ナビゲータから↓のアイコンを選択します。 最後に実行した
iPhoneアプリを作ってると、時々プライベートライブラリの中身が気になったりとかありますよねー。 世の中には色々な人がプライベートライブラリのヘッダファイルを解析して、その情報を提供してもらえてるけども、メソッドの引数がオブジェクトの場合は(id)になってることがほとんど。 でも、これじゃオーバーライドしてごにょごにょするのにとても不便。 引数のクラスが分かってるととても便利になるのに。 そういう時にxcodeの「シンボリックブレークポイント」を使うと、プライベートライブラリでもなんでも調べることができる。 ただし、シンボル名が分かっているならば。 以下、使い方。 今回はPhotoLibraryフレームワークの PLCameraView クラスのインスタンスメソッド CameraControllerReadyStateChanged: を例に挙げてみる。
The latest version of the Injection App for "Hot Reloading" code into your iOS, tvOS or macOS app is currently available in the "Mac App Store": https://itunes.apple.com/us/app/injectioniii/id1380446739?ls=1&mt;=12 A simple overview of how to use this version in the description starting with the example project GettingStarted.zip and you can see this in action here: The new version uses a file wat
lldbのrecursiveDescriptionがめっちゃ便利です。 lldbでUIViewのsubviewを再帰的に確認できます。 (lldb) po [self.view recursiveDescription] <UIView: 0x113713260; frame = (0 0; 320 568); autoresize = RM+BM; layer = <CALayer: 0x10bca42f0>> | <_UILayoutGuide: 0x10bcac7d0; frame = (0 0; 0 0); hidden = YES; layer = <CALayer: 0x11370df90>> | <_UILayoutGuide: 0x10bcb0650; frame = (0 0; 0 0); hidden = YES; layer = <CALayer: 0x10bc257
ちょっと3Dグラフィックスやってみようかと思って、もしかしたら座標変換のライブラリはないかとドキュメントを見ていたら、Core Animationの関数を使ってアフィン変換・透視変換とかできる上に、そのまま描画もできるらしいということが分かった。 Core Animationプログラミングガイド: レイヤジオメトリと変換 Core Animationプログラミングガイド: Core Animationレイヤの配置 やってみた結論としては、がっつり3DやるならやっぱりOpenGLとか使った方が良いと思う。けど、簡単な図形や画像をちょっと俯瞰っぽく見せたい、ぐらいなら使えるかも。 ちなみにOSバージョンはSnow Leopard(10.6.6)です。 追記: これで立体迷路アプリ作ってみた 準備1. CocoaのクラスにCALayerを貼付ける とりあえず適当なサイズのウィンドウを表示させてC
iOS4からBlockが導入されました。利用目的としてはDelegateパターンと大差ないと思っていますが、処理記述が呼び出し元で記述できることで可読性が高くなります。 また、コールバック時に利用されるperformedSelectorが非常に使いづらく複数の引数となった場合などを考慮してNSDictionaryで定義したりInvocationを使う必要がったりと面倒な点が多々ありました。 今回は、CoreFoundationにカテゴリで組み込まれたBlockを活用したBlocksKitフレームワークを紹介したいと思います。かなり便利なため、今後のコーディングスタイルを変えてしまうほどのインパクトがあると個人的には思っています。 BlocksKit https://github.com/zwaldowski/BlocksKit BlocksKitはBSD, MITライセンスの元で利用可能で
iOS/iPhone/iPad/MacOSX プログラミング, Objective-C, Cocoaなど [前回] Cocoaの日々: UISearchDisplayController 調査 今回は UISearchDisplayController と NSFetchedResultContoller を組み合わせて Core Data 内のデータを検索できるようにしてみる。 情報 ネット上で情報を探したがあまりなかった。Stack Overflow の記事が参考になった。 How to use NSFetchedResultsController and UISearchDisplayController - Stack Overflow 基本的には UISearchDisplayDelegateメソッド内で画面で入力した文字を条件にして NSFetchedResultControl
iOS アプリを開発していると共通の実装でコンテンツだけ差し替えた別アプリをリリースしたいことがある。例えばゲームならキャラクターやパラメータ、観光案内アプリであれば地図や写真を土地ごとに変更する、など。 このような対応をおこなう場合、外部スクリプトでコンテンツ部分を差し替えるとかリポジトリのブランチを利用してプロジェクト構成を切り替えるのかと想像していた。しかし調査してみたら Xcode の標準機能だけで実現できたので方法をまとめておく。 Xcode プロジェクトのターゲット管理 Xcode で iOS アプリのプロジェクトを作成すると初期状態ではターゲットがひとつだけ指定されている。これを複数にする手順は以下。 Xcode でプロジェクトを開く 画面左の Project Navigator 上でプロジェクトを選択 右側に表示された TARGETS 欄のターゲットを選択して、コンテキスト
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く