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. というエラーメッセージが出て、失敗しました。いろい…

3GSでも、空きメモリがかなり少なくなることがあるみたいですね。

iPhone 3GSの「倍増したRAM」を体感する。 - The iPhone Development Playgroundで、電話、Mail、Safari、iPodの4つのプロセスが立ち上がっていても、空きメモリが、80MBあるということを書きました。ところが、使い込んで行くと、MailやSafariのメモリ使用…

iPhone 3GSの「倍増したRAM」を体感する。

本日朝、iPhone 3GSを入手しました。 早速ですが、iPhone3GSのRAMは、噂通り倍増したみたいです - The iPhone Development Playgroundでも書きましたが、SysStats Liteを使って、「倍増したRAM」を体感しました。 使用可能なRAMのサイズを示す、「物理メモリ…

SysStats Liteの「測定できない領域」は、わかりにくいものですよね。

iPhoneのメモリが足りない? パワーリンゴ/ウェブリブログ うーん、空きが非常に少ないのと、測定できない領域の多さが気になります。今までも使い込むとこのような円グラフになることはありましたが、今回は再起動からあまり時間が経っていません。 iPhone…

iPhoneOS 3.0で、アプリを強制終了する方法

iPhoneOS 3.0では、ホームボタン長押しだけでは、アプリを強制終了することができないようです。 具体的な方法は、iPhone User Guideの、Basics -> Restart and Resetting iPhoneという項目で説明されています。iPhone User Guide (iPhoneからのみアクセス可…

iPhone3GSのRAMは、噂通り倍増したみたいです

今日の日中に、iPhone abonnement kopen? Bestel de 5s, 5c of 4s bij T-Mobileで、iPhone3GSのスペックが公開されていたのですが、今見たらCPUやRAMに関する情報が削除されてしまったようです。やはり、本来見せてはいけない情報だったんでしょうね。 とり…

当たり前だけど、iPhoneが不調なときは、まず、再起動してみるのがいいかも。

ふだん、自宅では、iPhoneで位置情報が取れているのに、先週末に全く取れなくなりました。 最初は自分が作ったアプリ(Easy Attendance Memo)が悪いのかと思いましたが、標準のマップアプリケーションでも、同じ現象でした。 さらに、MotionX GPS Liteという…

SQLiteで日時を扱う方法

SQLiteには、DATEやTIMESTAMPなどの、日時を扱うデータ型はありません。一方で、Objective-Cのプログラムでは、NSDateオブジェクトで日時が表現されます。 では、NSDateオブジェクトの値をSQLLiteのテーブルのカラムに格納するときに、どのようにマッピング…

待ち受け状態のiPhoneが熱くなったときの対処例

先ほど、待ち受け状態で、何もアプリを動かしていないiPhoneが突然熱を持っていたので、SysStats Liteを使って状況を確認してみました。 【5/24 追記】 一点、大事なことを書き忘れていました。このときには、iPhoneの再起動だけでは、問題は解決されず、再…

Core Locationのaccuracyについて

CLLocationManagerのdesiredAccuracyプロパティは、位置情報を取得する時に、求めたい精度を指定するためのパラメタです。しかしながら、実際に取得される位置情報は、その精度を満たしているとは限りません。そのことについて、Appleのドキュメントに書かれ…

Malloc Simulatorはリジェクトされました。

ここしばらく、別のアプリケーションの開発に重点を置いていたため、報告が遅れましたが、別途申請していたMalloc Simulatorが、今月初めにリジェクトされました。理由は、「iPhoneに対する不的確な診断情報を提供するので、ユーザを混乱させる」というもの…

iPhoneシミュレータで、Core Locationを使う場合に気をつけること

iPhoneシミュレータには、GPS機能はないので、Core Locationが実機と同等に使えないのは当然ですが、知らないとハマることもあるので、メモを兼ねて、書いておこうと思います。 iPhoneシミュレータの制約 常に、同じ位置情報が返ってくる。 その値は、北緯37…

iPhoneに付属のメールアプリを自動起動させないようにする方法

もしかすると、ご存知の方も多いかもしれませんが、説明されているドキュメントや記事が見つからなかったので、書いておきます。 iPhoneに標準で付属しているメールアプリケーションが、ホーム画面のアイコンをタップしなくても、勝手に起動されていることが…

自分のアプリが使用しているメモリサイズを取得するには

これまで、iPhoneやiPod touchの全体でどのようなメモリ使用量になっているのかということについては、何度か説明してきました。当然のことですが、アプリ開発者に取ってはそれだけでなく、自分が作ったアプリが、いったいどのくらいメモリを使用しているの…

メモリー使用量の謎(2)

アプリに添付しているドキュメントに、メモリ使用量の取得方法について、以下の通り説明しています。 アプリ添付ドキュメントからの抜粋メモリの使用状況を、数値と円グラフで表示します。表示されている数値は、host_statistics()関数のHOST_VM_INFOで取得…

iPhoneをリストア中

自分のメインの携帯電話兼アプリケーション開発機として使用しているiPhoneがの動作が、先ほどから急に不安定になってしまいました。 アプリケーションをビルドして、iPhoneにインストールしようとすると、0xE8000001(Try disconnecting and powering off th…

AppStoreでリジェクトされてしまいました。

SysStats Lite 関連技術情報 - The iPhone Development Playgroundに、次バージョンのリリースについてお知らせしましたが、残念なことに、AppStoreでリジェクトされてしまいました。 このアプリの中で、SafariやiPodなどのアイコンを表示していますが、それ…

メモリ解放処理って。。。?

ちょっとした裏話です。 いろいろと調べている中でわかったことですが、Google Earthなどのように、メモリを多く消費するアプリケーションを動かすだけでも、SysStats Liteのメモリ解放処理と同じような状態を作ることができます。その結果として、同じよう…

次のバージョンについて

追記この記事は、過去に、「メモリ解放機能」の追加を試みたときの記録となっています。 最終的にAppleの審査が通らなかったため、結果として実装を中止しました。 今後も、何か正規の認められた方法で類似の機能を実現できるようにならない限り、このアプリ…

iPhoneのSafariがいつのまにか終了する条件

以前、SysStats Liteを使っていて気づいたこと - The iPhone Development Playgroundの中で、以下のようなことを書きました。 例えば、Safariを起動してWebページを見た後に、上記の「稼働中のアプリケーション」画面を開くと、Safariが「稼働中」になります…

SysStats Liteのメモリ使用状況について

アプリの中に添付しているドキュメントでは、開発者向けの説明になってしまっているので、専門的すぎて、わかりにくい部分もあるかと思います。 前回述べたように、SysStats Liteのメモリー使用状況で表示している項目は、MacのActivityMonitorというアプリ…