統計情報(30日間)


最新情報をツイート


人気の投稿

iCloud Programming Guide for Core Data

このエントリーをはてなブックマークに追加

出てた。



SQLite Store, Document Storage の利用の他、ちょっとした Best Practices など(最適化、マイグレーションなど)。

Cellular Best Practices Guide

このエントリーをはてなブックマークに追加

Appleから携帯電波環境でのアプリ開発のベスト・プラクティスが出てた。


細かいアクセスはひとまとめ(bunlde)する、電波状態によって転送レートが変わることを認識する等。Instrumentsを使った具体的なグラフでの例示がわかりやすい。

ネットワークを頻繁に使うアプリでは参考になりそう。

「iOSアプリケーション プログラミングガイド」日本語最新版

このエントリーをはてなブックマークに追加

出てた。

iOSアプリケーション プログラミングガイド(PDFファイル直リンク)
※以前の配布ページが何故か見られなくなっていたのでGoogleで検索して見つけたリンクを掲載しておく。

改訂履歴
2013-09-18 新しいバックグラウンド実行モード、iOS 7で用いるアプリケーショ ンアイコンの寸法に関する情報を追加しました。

読みなおすと結構しっかりと書かれていてアプリ開発経験者でも役立つ情報がある。

「アプリケーションの状態変化の管理」は図入りでメソッドの呼び出し順序が掲載されている。この辺り多くの人がブログで調査しているが公式のものとして参考になる。

バックグラウンド実行とマルチタスクは、利用上の注意点がよく整理されている。今回iOS7で追加された新しい実行モードの説明が追加された。

[iOS7] 移行ガイド

このエントリーをはてなブックマークに追加

日本語版が出てた。iOS6アプリの外観をiOS7へ移行させる為の様々な情報が提供されている。



両者の違いが細かく説明されていて参考になる。



ざっと読んで気になった部分をピックアップ:

条件に応じてリソースをロードし分ける
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
   // iOS 6.1以前に対応したリソースをロード
} else {
   // iOS 7以降に対応したリソースをロード
}
ジェスチャリコグナイザを利用する iOS 7が登場するまで、あるジェスチャリコグナイザが別のジェスチャリコグナイザの処理を抑制する必要がある場合、双方のオブジェクトの生成時に、requireGestureRecognizerToFail:を使って永続的な関係を設定しなければなりませんでした。この方式が成立するためには、アプリケーション(あるいはフレームワーク)の他の箇所でジェスチャリコグナイザを生成することがなく、したがって、稼働するジェスチャリコグナイザが入れ替わらないことが条件です。 iOS 7ではUIGestureRecognizerDelegateに2つのメソッドが追加されています。これにより、ジェスチャリコグナイザのデリゲートオブジェクトが、処理を抑制する(失敗させる)旨の要求を実行時に指定できるようになりました。 gestureRecognizer:gestureRecognizer shouldRequireFailureOfGestureRecognizer:otherGestureRecognizer gestureRecognizer:gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:otherGestureRecognizer
Webビュー HTMLで記述したコンテンツを表示する領域です。 iOS 7では、UIWebViewにページ分割して表示できるようになりました。

む?



Core Bluetooth Programming Guide

このエントリーをはてなブックマークに追加

出てた。Central/Peripheralそれぞれの処理、バックグラウンド処理、ベスト・プラクティスなどひと通りの説明があるようだ。



iOS6時代のアップデートサイズの減らし方

このエントリーをはてなブックマークに追加

iOS Developer Library の Technical Q&Aに新着



その冒頭部で(個人的には)驚きの記述が
A: Starting with iOS 6, the app store will automatically produce an update package for all new versions of apps submitted to the store. This package is optimized for updating an app from one version to another, and contains files that have changed between the prior version of an app and the new version of the app, excluding files that have not changed.
(意訳)iOS6からは新バージョンに関してAppStore側でアップデート専用のパッケージを自動的に用意する。アップデート用パッケージはバージョン間の差分のみで、変更の無いものは含まれない。つまりユーザがアプリをアップデートする時には新バージョンで変更が入ったファイルだけのダウンロードで済むということらしい。

o_o これは知りませんでした。。差分は新規追加、変更さらには削除も反映されているとのこと。


それを前提にして2つのTipsが紹介されている(以下、意訳)。

1. 不必要にファイルの変更を行わないこと
変更されたファイルはすべてアップデートパッケージに含まれるということ。なお変更検出にはdiff他のツール使っているとのこと。

2. 変更が生じる箇所はできるだけ別々のファイルに分けておくこと
どういう事かというと、例えば大きなファイルの1バイトだけの調整も変更とみなされ、ファイル全体がアップデートパッケージに含まれるようになる。例では10MBのうち10KBの変更であっても、アップデートパッケージには10MB全体が含まれるようになるとの説明があった。可能であればファイルを分割して変更が含まれるファイルのサイズを減らすのが良いということらしい。

- - - -
ポイントは、差分の単位がファイルということ。今後はこの辺りを考慮してアプリをつくり込むとアップデート時のダウンロード時間を減らしてユーザ体験を向上できそう。

あと最後のWarningに書いてあったが、ファイルの作成日時と更新日時は差分検出の条件に含まれないとのこと。これも重要。

(公式)アプリ配布ガイド

このエントリーをはてなブックマークに追加

Appleからアプリ配布に関するドキュメントが公開されていた。



証明書にプロビジョニングファイル作成からiTunesコネクトの説明まで配布に必要な作業がひと通り網羅されて説明されている。


AdHoc関連の貴重な情報など


トラブルシューティングもある


MacでのAppStore外配布の説明もあった。

高精度タイマー

このエントリーをはてなブックマークに追加

Technical Noteによる解説。その概要や mach系関数の利用例など。精度は、構成ハードウェアや実行時の状況など様々な要因から影響を受ける、とのこと。



purgeIdleCellConnections: found one to purge の意味が判明

このエントリーをはてなブックマークに追加

iOS6から出るようになったメッセージの意味がついに判明。デバッグログが残っていただけみたいだ。。





要約:

・purgeIdleCellConnections:.. はデバッグメッセージが誤って残っていた

・NSURLConnection は HTTP/1.1 persistent connection 用のキャッシュを持っている

・このキャッシュは単一ホストに対する複数の persistent connection を1まとめにして管理する

・キャッシュ内の connection に紐づくリクエストがすべて完了するとアイドル(状態)になる

・アイドル(状態)が続くとキャッシュから purgeされ(切り離され)、使っていたTCP/IPを切断する

・この仕組が iOS6から変わった
iOS6以前:単一の仕組みで構成、OS X とタイムアウトが
大きく異なっていた(OSX/30s vs iOS/3-6s)

iOS6以降:2つの仕組みで構成、WWAN接続とそれ以外の
接続でタイムアウトを分けた
WWAN:3s
それ以外:60s

・このデバッグメッセージはWWAN接続がキャッシュから purgeされた時に表示される

・iOS5ではこのメッセージは出ない


というわけで無害であることが判明。

(参考)
[Studying HTTP] HTTP Connections

Sample Code - AVLoupe

このエントリーをはてなブックマークに追加



カメラロール内のビデオを選択すると、再生中の動画上でルーペ(拡大鏡)が使えるようになる。


ポイントは2つのAVPlayerLayerを合成しているところ。
@property AVPlayer *player;
@property AVPlayerLayer *zoomPlayerLayer;
@property AVPlayerLayer *mainPlayerLayer;
mainPlayerLayer は通常の動画再生レイヤーで、zoomPlayerLayerがルーペ内の拡大された動画再生レイヤーになる。どちらも -[AVPlayerLayer playerLayerWithPlayer:] から取得した AVPlayerの動作再生レイヤー。このメソッドを使うと再生中の動画を複数のレイヤーで同時に表示することができる(って今回初めて知った)。この性質を利用して、zoomPlayerLayerに変形とマスクを適用することでループを表現している。

以下はzoomPlayerLayerの生成部分
// Set up the zoom AVPlayerLayer.
self.zoomPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
CGSize zoomSize = CGSizeMake(self.view.layer.bounds.size.width * ZOOM_FACTOR,
 self.view.layer.bounds.size.height * ZOOM_FACTOR);
self.zoomPlayerLayer.frame = CGRectMake((contentLayer.bounds.size.width /2) - (zoomSize.width /2),
(contentLayer.bounds.size.height /2) - (zoomSize.height /2),zoomSize.width,zoomSize.height);

[contentLayer addSublayer:self.zoomPlayerLayer];
[self.loupeView.layer addSublayer:contentLayer];

丸く切り取るマスク
// The content layer has a circular mask applied.
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = contentLayer.bounds;

CGMutablePathRef circlePath = CGPathCreateMutable();
CGPathAddEllipseInRect(circlePath, NULL, CGRectInset(
self.loupeView.layer.bounds, LOUPE_BEZEL_WIDTH , LOUPE_BEZEL_WIDTH));

maskLayer.path = circlePath;
CGPathRelease(circlePath);

動画再生の変形と合成がこんなに簡単にできるとは。これは色々と応用できそう。

Collection View

このエントリーをはてなブックマークに追加

日本語訳が出ていた。




ボリュームは50ページ近くあって基本からレイアウトのカスタマイズまで丁寧に説明されている。



関連情報。


簡潔にまとまっていてわかりやすい。



Xcode、iOSのバージョン毎に利用可能な Objective-C の表記まとめ

このエントリーをはてなブックマークに追加

iOS Developer Library に Xcode、OS X、iOS ごとに利用可能なObjective-Cがまとめられている。
例えば ARC は Xcode4.2、iOS5から使えるが、zeroing は iOS4で使えないなど。


NSNumberリテラルなどは Xcode4.4以上なら OSを問わず使える(コンパイラの機能なのでそりゃそうだ)。



QA1765 - クラッシュレポートに該当するバイナリを探す方法

このエントリーをはてなブックマークに追加

実行ファイル(バイナリ)には "build identifier" (UUID)が割り当てられているので、クラッシュレポート記載の IDと突き合わせることでクラッシュが起きたバージョンのバイナリを特定できる。その方法が書かれている。



バイナリの build identifier は ipaファイルを展開した後、dwarfdumpコマンドで表示できる。
$ dwarfdump --uuid Example.app/Example
UUID: 270A9B9D-7A33-3A4A-9F1A-AF8186F81394
  (armv7) Example.app/Example

ユーザからのバグがデバッグで再現しないのはバイナリと環境が違うから

このエントリーをはてなブックマークに追加

Technical Q&A QA1764 より。

Xcodeでのビルド&実行は AppStore配布のバイナリと異なるし開発用環境での実行は Watchdog が無いなど同じ実機でも実行環境が異なる。このためユーザから報告を受けたバグが開発環境で再現しないということがまま起こる。環境の差異を解消する方法として "Archive"で ipa パッケージを作成し、iTunes経由でインストールする方法が紹介されている。



参考
Cocoaの日々: [iOS] 起動に時間がかかりすぎるとクラッシュする(原因と対策など)

iOS プログラミングガイド日本語訳更新

このエントリーをはてなブックマークに追加

RSSによれば更新の他、3つのドキュメントが新たに日本語訳公開になったとのこと。

Stroboard 習得の為のチュートリアル。野鳥観察の名所のリストという Stroyboardを活用した架空のアプリケーション開発の手順が詳しく説明されている。

iCloudドキュメントストレージAPIを使いファイルの保存と操作を行うサンプルプログラムを開発する。UIDocumentのサブクラスを作成してデータを読み書きする他、ドキュメント検索、トラブルシューティング情報などが記載されている。

「ファイルシステムプロ グラミングガイド」
以下、改訂履歴より
ファイルコーディネータとファイルプレゼンタに関する情報を追加 しました。

iCloudの情報のコピー、移動、削除を追加しました。 『セキュリティの概要 』で説明していた権限情報を追加し、また

各種の権限モデルの相互作用を示す概要を追加しました。
iCloudにおけるファイル管理の説明もある(同期のアーキテクチャなど)。以下、目次
iCloudのファイル管理

  • iCloudのドキュメントの保存と使い方
  • iCloudストレージAPI
  • iCloudのドキュメントの操作
  • ドキュメントをiCloudストレージに移動
  • iCloudのドキュメントの検索
  • ファイルの版の食い違いの処理
  • iCloudストレージの信頼性のある使い方
他にもファイルの非同期読み書き(GDC利用、OSX10.7以降、iOS不可)など興味深い説明あり。


その他、更新されたドキュメント

  • iOSヒューマン インターフェイス ガイドライン
  • iOSアプリケーションプログラミングガイド
  • iOSツール ワークフ ローガイド
  • App Storeでの公開に向けた開発
  • 初めての iOS アプリケーション (旧題 iOSアプリケーションチュートリアル)
  • In App Purchase プログラミングガイド
  • iOS View Controller プログラミングガイド
  • iOS ドキュメントベー ス アプリケーション プログラミングガイド





iOS ドキュメント更新(2/16)

このエントリーをはてなブックマークに追加

扱いが "Content Update" のものを紹介する。

ドキュメントの更新リスト(新しい順)
iOS Developer Library
更新分類は右側の日付の所に書いてあって次の種類がある。

 First Version
 Content Update
 Minor Change
First Version は一つ前の投稿で紹介したので参照されたい。


NSURL Class Reference
Reorganized tasks section to better reflect common usage. Substantial edits and rewrites to clarify specific behaviors, particularly for methods and properties added in iOS 5.



Instruments Help
Added descriptions for APIs that support security-scoped bookmarks, used in apps that adopt App Sandbox.

Entitlement Key Reference: About Entitlements
Offers a complete list of help books for performing essential Instruments tasks.

Devices Organizer Help
Added descriptions for new entitlement keys added in Mac OS X v10.7.3.

CFURL Reference
Updated for Xcode 4.3.

CATransition Class Reference
Added descriptions for APIs that support security-scoped bookmarks, used in apps that adopt App Sandbox.

Archives Organizer Help
Updated the special considerations for the filter property to reflect the availability of Core Image in iOS 5.

iOS リリースノート&新ドキュメント(2/16公開)

このエントリーをはてなブックマークに追加

大量のアップデートと共に新規公開もあったのでそれらを紹介する。

リリースノート。新規&更新ドキュメントの入り口としてまずはここを見るのがいい。新しく参入した開発者向けのドキュメントや Xcode4.3 へのリンクなどが記載されている。




Core Foundation の iO5版リリースノート。新メソッドや deprecatedなメソッドの紹介など。



こちらは Foundationライブラリ(いわゆる Cocoa Touchなど Obj-Cベースのライブラリ)の iOS5版リリースノート。iOS4との差分情報など。



Instruments のユーザリファレンス。

使い方ではなく、画面上に表示される項目の説明が記載されている。こんな感じ。


これから iOSアプリ開発を始める人向けのガイド。簡素で図が多い。概要を知るにはいいかも。



初めて App Store へアプリを提出する人向けのガイドブック。概要から始まり、プロビジョニングファイルの取り扱い、テスト、iTunes Connect の使い方、トラブルシュートなどひと通りの内容が網羅されている。Ad Hoc プロビジョニングファイルを使ったテスト方法の説明あり。