iPhone技術情報

ibtoolが突然xibファイルを見つけられなくなったときの対処

ibtoolはNIBファイルをコマンドラインで処理することができる便利なツールです。私は、NIBファイルのローカライズを行うときに、使っていますが、Xcode5.0.1 + Mavericksにしてから、以下のようなエラーで失敗することが、ときどき起きるようになりました。 …

PhoneGapを使ってみた

最近は、HTML5で作られたモバイル向けWebアプリケーションをベースに、ネイティブアプリケーションを開発する、ハイブリッド型のアーキテクチャを採用するケースも増えてきているようです。 今さらですが、とりあえず、その代表的なプラットフォームであるPh…

iPhoneのRetina4ディスプレイ判定方法

Retina4か否かを判定する方法をいろいろ調べてみました。 正しいディスプレイのサイズを取得するためには、+[UIScreen mainScreen]メソッドで得られるオブジェクト使うのですが、以下のように3つの値が取得できます。 NSLog(@"mainScreen bounds height %f",…

とりあえず、アプリの画面サイズを、Retina4 (640 x 1136 pixels) に対応させる方法

まず、結論から言ってしまうと、640 x 1136 pixels の Launch Image が設定されていれば、Retina4 デバイスでアプリが実行されたときに、画面サイズが640 x 1136pixelsになるようです。具体的な設定方法は、 iOS App Programming Guide を参照していただくと…

Retinaディスプレイで画像リソースをキレイに表示するには?

iPadがRetinaディスプレイになったことで、また1つ、解像度の異なるiOSデバイスが増えました。どれだけの種類があるかというのは、List of iOS devices - Wikipedia, the free encyclopedia にまとめられています。ここから、ディスプレイの解像度に関する情…

iOSと絵文字について

iOS4.xまでは、絵文字キーボードが使える場所は、SMS/MMSと、i.softbank.jpのメールに限定されていました。このときの絵文字は、Unicodeの私用領域(PUA: Private Use Area)を使って表現されていました。そのことは、以下の記事でわかりやすく説明されている…

日本語キーボードの変換候補表示方法の変更への対応

iOS5で、日本語キーボードの変換候補表示方法が変わったことに、みなさんすでに気付いていることと思います。iOS4.xでは、以下のように、カーソルの近くに表示される仕様でした。 iOS5では、以下のように、変換候補の表示領域が固定で確保されるようになった…

iOSのバージョンチェック方法

今週は、iPhone 4Sの発売が控えていますが、開発者にとっては、もう1つ重要なポイントがあります。それは、iOSが、5.0にバージョンアップされることです。 SysStats MonitorとSysStats Liteでは、バージョンアップの影響を受ける部分があります。 過去に、2.…

UIDocumentInteractionControllerによる、アプリケーション間のファイル受渡し

昨年、iOSの中で、アプリケーション同士が連携するためのしくみ - The iPhone Development Playgroundで、UIDocumentInteractionControllerを使ったアプリケーション間連携について簡単に説明しました。そのときに少し触れたとおり、SysStats MonitorとSysSt…

UIDocumentInteractionControllerによる、アプリケーション間のファイル受渡し

この記事は、こちらに移動しました。 UIDocumentInteractionControllerによる、アプリケーション間のファイル受渡し - The iPhone Development Playground

iOS4.2で、一部の標準アプリのプロセス名が変更されたようです

SysStats Monitor / Lite では稼働中のプロセス一覧を表示しています。実際のプロセス名と、ホーム画面に表示されている名前と一致している場合もありますが、それが異なっているものも多いのが実情です。 例えば、以下のアプリが該当します。 ホーム画面 プ…

iTunesのファイル共有機能を使えるようにしてみました

SysStats Monitorでは、次のバージョンで、iTunesのファイル共有機能をサポートするようにしてみました。ファイル共有機能がどういうものなのかについては、以下の記事がわかりやすいと思います。iWork for iOS:iTunes のファイル共有についてiPadのことと…

iPhoneの空きメモリがだんだん減って行くのはなぜか?

iOSでは、モバイルデバイスの限られたリソースや操作感を前提に、独自のマルチタスキング環境が実現されています。 ユーザから見たその特徴は、 アプリをすばやく切換えられる(Fast app switching)。 再度呼び出した時に、前回の状態が維持されいて、操作を…

自分が使っているCPU使用率とメモリ使用量を表示している理由

『iPhone 4 PERFECT GUIDE』(ソフトバンククリエイティブ社刊)の201ページに、SysStats Liteを紹介していただいてます。ソフトバンク クリエイティブ:『iPhone 4 PERFECT GUIDE』紹介アプリのリンク集iPhone 4 PERFECT GUIDE (パーフェクトガイドシリーズ)作…

不要なプロセスは自分で選んで終了させよう

iOS4から、一部の古い機種を除き、マルチタスキングがサポートされるようになりました。それによって、アプリの切替が速くなったのはいいですが、反面、待機しているバックグラウンドプロセスが増えたことにより、メモリ使用量が増えたという問題があります…

iPhoneの「電源オフ」と「リセット」は何が違うのか?

iPhoneの調子が悪いときに、システムを再起動することで問題が解決することが多いのは、みなさんがご存知だと思います。iPhoneユーザガイドの226ページにある、「付録 A: サポートおよびその他の情報」の「iPhone を再起動する/リセットする」には、具体的な…

空きメモリが少ない時に、iPhoneの中で何が起きるのか、また調べてみました。

一般的なコンピュータは、物理的に空きメモリが不足すると、OSの判断で、メモリ上のデータを、スワップ領域に逃がして、空きメモリを供給しようとします。iOSの場合は、スワップ領域がないので、また異なった手法が取られます。Out Of Memory Killerに似てる…

バックグラウンドプロセスが多い時のメモリ使用状況の不思議

SysStats Monitor/SysStats Liteでは、host_statistics()という関数をHOST_VM_INFO指定で呼び出して得られるvm_statistics構造体から、現在のメモリ使用状況を取得して表示しています。アプリをたくさん起動して、バックグラウンドプロセスが多い状態を作る…

Out Of Memory Killerに似てるけど、もう少しやさしいiPhoneOSの空きメモリー制御

みなさんは、Linuxカーネルに備わっているOOM Killer(Out of Memory Killer)というものをご存知でしょうか? OOM Killer(Out of Memory Killer)は,システムが実メモリーと仮想メモリー空間(スワップ領域)を使い切り,必要なメモリー領域を新たに確保…

iOS4でバックグラウンド化されているアプリを確認する方法

iOS4から提供されているマルチタスク機能によって、アプリ実行中にホームボタンを押した時に、プロセスを終了させず、バックグラウンドで一時停止状態にすることができるようになっていることは、多くの方がすでにご存知だと思います。 PCとは異なり、バック…

SysStats Monitorのユニバーサル化を試してみました

iPadでは、従来の多くのiPhoneアプリを、そのまま何も手を加えずに動かすことできますが、iPad向けに作られたものと比べると、見劣りするというのが事実です。SysStats Monitorも、残念ながら、現時点ではその状態にあります。 iPadへの本格対応をする場合、…

iPhoneの空きメモリを少なくする方法

久しぶりの投稿です。 過去に何度か、空きメモリ不足に関する説明をしていますが、今回はちょっと切り口を変えてみました。タイトルにあるように、わざわざ「空きメモリを少なくする」ということは、普通はやらないというか、望まれないことですが、アプリ開…

iPhoneの中で動いているプロセス

SysStats Monitor/SysStats Liteでは、iPhoneの中で動いているプロセスの一覧を表示しています。 バックグラウンドで動いている標準アプリのことは、これまでにも説明してきましたが、それ以外のものについては特に触れていませんでした。AppStoreのカスタマ…

iPhoneアプリは、そんなに自由に作れない

iPhoneは、DarwinをベースにしたiPhone OSで動作するコンピュータです。iPhoneの基本システムを構成するソフトウェアは、バックグラウンドプロセスと動作しており、そのあたりは、一般的なコンピュータと大差ありません。そのためかどうかはわかりませんが、…

SysStats Monitor/Liteの「その他」領域について

SysStats Liteのカスタマーレビューにて、メモリ使用状況の「その他」領域について質問をいただいたようなので、それについて説明したいと思います。 技術的な観点では、 SysStats Liteの「測定できない領域」は、わかりにくいものですよね。 - The iPhone D…

自分のアプリが使っているCPU時間とメモリサイズを取得する

SysStats MonitorとSysStats Liteでは、iPhone/iPod touchシステム全体の、メモリ使用状況を表示しています。この中には、暗黙的にこれらのアプリケーション自身が使用しているメモリサイズも含まれています。そのことは、PCではほぼ誤差の範囲かもしれませ…

UITableViewControllerのviewWillAppear:メソッドで気をつけること

かなり以前にハマったことがある内容ですが、たまたま思い出したのでメモを兼ねて書いておきます。 UITableViewControllerのサブクラスを使う場合、viewWillAppear:メソッドの中で、tableViewオブジェクトのreloadDataを呼び出すような実装を行うことが、一…

2.2.1でビルドしたアプリから、3.0で追加されたAPIを使ってみました

先ほど、SysStats Liteに、バッテリ残量の表示を追加して、アップデートを申請しました。 やることは非常に簡単なのですが、その中で、少しだけ悩んだことがありました。バッテリ残量取得のAPIは、OS3.0以降で追加されたので、ふつうにコーディングすると、O…

海外でiPhone使ってみました

先日、夏休みを取得してグアムに行ってきました。iPhone(というか、海外で使用できるケータイ)を手にしてから、初めての海外旅行です。 高額な通信料を恐れて、3GとデータローミングはOFFにしていたので、使い込み度は低いのですが、そのときのことを少し書…

iPhoneアプリビルド時に起こる、code sign errorの対処例

先日、アプリを実機でテストしようとビルドを実行したところ、 Code sign error: The identity "iPhone Developer" doesn't match any valid certificate / private key pair in the default keychain. というエラーメッセージが出て、失敗しました。いろい…