某社からIIJmioにMNPしました。
2012/10/30
iOS 6における低メモリ警告とその処理について
iOS 6からviewWillUnloadとviewDidUnloadが呼ばれなくなったようなので、実際どのように処理をしているのかを調べてみました。
詳細は「View Controller Programming Guide for iOS」の「Resource Management in View Controllers」を参照してください。
2012/03/30
2012/01/31
フリーの国際化ツールLocalization Suiteを試す
フリーの国際化ツールLocalization Suiteの存在を最近知ったので、便利かどうか試してみることにしました。
なお、この文書では例としてOS X 10.6.8環境下で、Xcode 4.2のプロジェクト作成時のテンプレートであるMaster Detailed Application (Story board未使用)をLocalization Manager 11.4などを用いてローカライズします。
2011/12/19
NSLoggerで手軽にログを取る方法について
NSLoggerはiOSとOS X上で動作するロガーです。簡単に言えばNSLogの代わりとなるようなものですが、次のような特徴を持っています。
- ログにレベルやタグを指定できる。
- 画像をログに出せる。
- Mac OS X上で動作する専用ビューワで内容を確認できる。フィルタや検索も可能。
- 専用ビューワでリモート接続されたアプリのログが表示できる (デフォルトでSSLを利用)。
- ログを保存して後で見ることができる。
いろいろ多機能にも関わらず導入は簡単で、使いかたもNSLogと大差ありません。そこで、本記事ではNSLogger 1.0をXcode 4.2に導入する手順と、簡単な利用法を紹介します。
なお、NSLoggerはARCに対応しており、BSDライセンスで提供されています。
2011/12/14
Xcode4.2でのDropbox SDK v1のサンプルアプリケーションのコンパイルについて
以前の記事でDropbox SDKのサンプルアプリケーションをコンパイルする方法を紹介しました。
あれから、Dropbox SDK v1がリリースされ、Xcodeも4.2になってサンプルアプリのコンパイル方法が多少変更されていますので、あらためてサンプルのコンパイル手順を簡単に紹介します。
2011/10/24
2011/09/17
Dropbox API v1 Betaがアナウンスされました
9月15日にDropbox API v1 Betaがアナウンスされました。blogで述べられている内容についてiOSに関連のあるおもしろそうなものから順に挙げていきます。
2011/05/22
CinderによるiPhoneアプリケーションの作成について
CinderはThe Barbarian Groupが開発しているC++ライブラリで、Processing.orgのように画像、音声、動画、ネットワークなどを手軽に扱うことができます。CinderはMac OS X, Windows, iPad, iPhoneをサポートしており、修正BSDライセンスによって提供されています。
そこで、本記事ではCinderのiPhone向けのアプリケーションを作成する手順について簡単に説明します。環境はXcode 3.2.5, iOS SDK 4.2, Cinder 0.8.2です。
2011/02/06
メソッドforwardInvocation:を利用したメッセージ転送について
Objective-Cでは、定義していないメッセージをオブジェクトへ送信すると、通常は未定義なセレクタとして例外NSInvalidArgumentExceptionが発生します。しかし、クラスにメソッドforwardInvocation:を定義しておくと、エラー報告前にこのメソッドが呼ばれるようになります。そのため、メソッドforwardInvocation:の実装次第で、メッセージがなかったときのデフォルトの挙動を定義したり、エラー回避などを行えるようになります。
この記事では、forwardInvocation:を利用したメッセージ転送や多重継承について述べます。なお、詳細については、Appleの「Objective-C Runtime Programming Guide」の「Message Forwarding」の章や、サンプルコード「ForwardInvocation」を参照してください。
2011/01/08
2010/12/21
UIDocumentInteractionControllerDelegateの処理の流れについて
以前の記事「safx: UIDocumentInteractionControllerを用いて別アプリケーションを開くメニューを表示する方法について」において、解放周りのコードが間違えていたようなので訂正を兼ねてDocumentInteractionControllerDelegateの処理の流れを調べてみました。
2010/12/14
Quick Look Frameworkを用いたプレビュー表示について
以前の記事「UIDocumentInteractionControllerを用いて別アプリケーションを開くメニューを表示する方法について」ではアクションシートやクイックルックを表示する方法を紹介しました。クイックルックの実装クラスであるQLPreviewControllerはクイックルックと同じプレビューや他アプリケーションへの転送機能を持っており、さらにプレビュー対象を複数項目にすると、項目間のナビゲーションを行う矢印が付きます (ただし、モーダルビューのとき)。また、データソースがデリゲートになっているので、ナビゲーションによる移動後にオンデマンドでデータの作成や取得を行うことができます。
本記事ではiOS4.0上で、クイックルックのクラスQLPreviewControllerを利用したプレビューを表示する方法について紹介します。詳細はAppleのドキュメント「Document Interaction Programming Topics for iOS」のUsing the Quick Look Frameworkを参照してください。
2010/12/09
Objective-Zipを用いたZip書庫の操作について
Objective-Zipは、現在最も普及しているであろう圧縮形式であるZipの圧縮と解凍を行うことができるObjective-Cのライブラリであり、ZLib
とMinizipという2つのライブラリを用いています。そのため、Objective-Zip自体は新BSDライセンスですが、ZLibとMiniZipはライセンスが異なる (zlibライセンス) ので注意してください。
Objective-Zipの現時点での最新バージョンである0.7.2は、iOSのバージョン3.1.2から4.2で利用可能です。この記事ではObjective-Zipを用いたZipファイルの操作を簡単に説明します。
2010/11/29
Objective-C上でブロックオブジェクトによる高階関数を用いてソートする方法について
iOS 4.0以降 (Mac OS Xなら10.6以降) で利用可能になったブロックオブジェクトは他の言語でのクロージャに相当するものです。ブロックオブジェクトはC, C++, Objective-Cで利用可能であり、Appleの並列実行アーキテクチャGrand Central Dispatchにおける基盤要素にもなっています。
ブロックオブジェクトはスタック上に生成されるため、copyによってヒープに移動させて破棄されないようにする必要があります (そして、使用後に破棄されるようにするためにautoreleaseさせる必要があります)。しかし、その点に注意さえすれば戻り値をブロックオブジェクトにした高階関数を利用することができます。
この記事ではObjective-Cにおいて、ブロックオブジェクトで高階関数を用いることで比較用のブロックオブジェクトを作成し、それを用いてオブジェクトのソートを行う方法を紹介します。
2010/11/26
Audio Queue Serviceを用いたネットワークストリーミングによるオーディオ再生
以前の記事「CFNetworkフレームワークを用いた入力HTTPストリームの作成」でネットワークからデータを取得する方法について述べました。今回はここから、Audio File Stream ServicesとAudio Queue Servicesを用いてオーディオ再生を行う方法について説明します。なお、詳細はAppleのドキュメント「Audio Queue Services Programming Guide」を参照してください。
2010/11/21
iOSアプリケーションを特定のファイル形式に対応させる方法について
前回の記事「UIDocumentInteractionControllerを用いて別アプリケーションを開くメニューを表示する方法について」では選択したファイルからクイックビューや対応可能なアプリケーションを呼び出す方法について説明しました。今回は、アプリケーションを特定のファイル形式に対応させ、前回の記事で用いたUIDocumentInteractionControllerから利用可能にさせる方法を説明し、ここで利用する統一型識別子 (UTI) についても簡単に説明します。
詳細はAppleの公式ドキュメント「iOS Application Programming Guide」の「Implementing Standard Application Behaviors」を参照してください。なお、この文書はiOSの場合について言及しており、Mac OS Xの場合とは詳細が異なります。
2010/11/18
UIDocumentInteractionControllerを用いて別アプリケーションを開くメニューを表示する方法について
メール (Mail.app) などで添付ファイルを長押し (タップアンドホールド) すると、「クイックルック (Quick Look)」を含めた対応可能なアプリケーションを選択させるためのアクションシートが表示されます。今回はこのアクションシートの表示の方法を説明します。
2010/11/13
CFNetworkフレームワークを用いた入力HTTPストリームの作成
前回の記事「NSURLConnectionを用いたURLローディングシステムを用いた通信」について説明しました。今回はBSDソケットとNSURLの中間に位置するフレームワークであるCFNetworkフレームワークを用いた入力HTTPストリームの作成について説明します。詳細についてはAppleのドキュメント「CFNetwork Programming Guide」の「Communicating with HTTP Servers」の章を参照してください。
2010/11/09
NSURLConnectionを用いたURLローディングシステムによる通信
Objective-CではURLをベースとした通信フレームワークであるURLローディングシステムが用意されています。これはプロトコルとしてftp, http, https, fileをサポートしており、これらのプロトコルでの通信を行うアプリケーションを簡単に書くことができます。
この記事ではAppleの「URL Loading System Programming Guide」を参考にして、URLローディングシステムを利用した通信の概要について紹介します。NSURLConnectionは同期通信にも対応していますが本記事では触れません。また、iOSでは使用できないNSURLDownloadも基本的には取り扱いません。








