考える×つくる×動かす

主に技術系のことを書いていきます。

iPhone OS3.1にしてからよくフリーズする。

iPhoneのOSを3.1に上げてからiPhone 3Gが頻繁にフリーズするようになった。

症状は画面が真っ暗なままHomeボタンを押しても、Sleepボタンを押しても何も反応しない。

今のところ1日に1回はこの症状が起きている。
この症状になった場合は、HomeとSleepボタンの長押しを2,3回くらいして再起動させるしかない。

完全に再現できた訳じゃないけど、
個人的にこの症状になる前の動作として多かったのは、


1.音楽再生中にヘッドフォンを引き抜いて音楽を止めてまたヘッドフォンを差す。
2.音が鳴るアプリを動作中にSleepさせて再度起動させようとしたとき。
3.Wifiが多数飛んでいる駅とかで3G通信をしようとしたとき。


これらの時に画面が真っ暗なまま復帰できない症状になることが多い気がする。


さすがに不便だからどうにかならんかなー

XcodeでObjective-Cのコードを成形する

普段はEclipseを使っている。
理由ってのはZendStudioが秀逸すぎて手放せないってのと、
ソースコードをしっかりと成形してくれるツールがあるのが大きい。

iPhoneのアプリ開発を初めてXcodeを使い始めてから、
ソースコードを成形してくれるツールがないかなと探してたら、
あったよー。


Uncrustifyっていうらしい。


しかもMacPortで探してみたらあったので速攻でインストール。

sudo port install uncrustify

Xcodeを開いてScripts > Edit User Scriptsで
追加して以下のコードを足した。

#!/bin/sh

echo -n "%%%{PBXSelection}%%%"
/opt/local/bin/uncrustify -q -l oc+ -c {$HOME}/Develop/Config/obj-c.cfg --replace <&0
echo -n "%%%{PBXSelection}%%%"

f:id:kazupyong:20090909192924p:image
設定は
Input :Entire Document
Directory :Selection
Output :Replace Document Contents
Errors :Ignore Errors
にして、ショートカットキーをAppleKey+F12に割り当てた。

obj-c.cfgファイルは適当に拾ってきたのを改造して、
iDiskにおいて、会社でも家でも外でも同じのを使えるように共有しておいた。


これで開発効率が上がりそうだね。

MacPortがうまく動かない

会社のMacProをSnow Leopardにアップグレードした。
当初はLeopardの状態のままでうまく動いていたんだけど、
PHP5.3.0を入れようとしたら見事に開発環境がおじゃんになった。

色々とやって動かなくなったので、
めんどくさくなったのでoptを削除して1から環境の構築。


# PHPApacheのインストール
sudo port install php5 +apache2 +curl +pear
# 各種モジュールのインストール
sudo port install php5-mbstring
sudo port install php5-memcache
sudo port install php5-imagick
sudo port install php5-gd
sudo port install php5-sqlite3

# DBのインストール
sudo port install mysql5-devel +server
sudo port install php5-mysql
sudo port install postgresql84-server
sudo port install php5-postgresql

confファイルをTimeMachineから救出して何とか元通りの環境に戻った。

ものすごい時間かかったよ。

Erica SudanのThe Developer's Cookbookを読み始めたよ。

英語の勉強も兼ねて洋書の本をamazonで買った。
プログラミングを勉強する際には英語の方がわかりやすいってのもあるけど。
英語の方が情報の量が多いのは事実だと思うよ。


Macの言語設定も英語にして使っているから、
スクリーンショットで英語表示されていてもそっちの方が分かりやすいしね。

前半はプロジェクトファイルやらコンポーネントについての説明。

そしてiPhoneアプリケーションの制限のお話。

制限は大きく分けて次の7個

1.ストレージの制限
2.データーのアクセスの制限(Sandboxって言うらしい)
3.メモリーの制限(3Gだと128Mbしかないよ)
4.インタラクションの制限(1度に表示できるのは1ウィンドウ)
5.エネルギーの制限(CPUは非力だから使いすぎるなって事)
6.アプリケーションの制限(バックグラウンドで実行できないよ)
7.ユーザーの動作の制限

続いてiPhoneのApplication Skeltonについての話。

1. main() function
アプリケーションの起動時に呼ばれるメソッド。
基本。

2.applicationDidFinishLaunching
アプリケーションの起動時に実行されるメソッド。
ここでUIwindowの設定だとかする。

3.applicationWillTerminate
アプリケーションの終了時に実行されるメソッド
ここでファイルに書き込んだりする。

4.loadView
UIViewControllerにあるメソッド。
ここでTabやNavigaterを設定する。

5.shouldAutorotateToInterfaceOrientation
横回転をするかしないかしないかのメソッド。
return YES;なら横回転をする。
return NO;なら横回転しなかった。

後半はHelloWorldのサンプルアプリケーションの話。

Code Signing IdentityをErica Sudanから
自分のDeveloperIDに変えたけどコンパイル時にエラーがでた。


Configurationを新しく作ったらそのエラーはなくなったけど。
実機で設定を変えたりと色々と動かしてみた。


f:id:kazupyong:20090730105037p:image


今日はここまで。
そういえばSafari(4.0.2)ではてなの管理画面から画像をアップロードしようとすると落ちる。
この仕様どうにかならないかな。


今日の読書はChapter1のintroducing the iPhone SDKの1~36ページ。

iPhoneの実機でサンプルプログラムを動かせたよ。

昨日iPhoneのDeveloper登録が完了したので、
実機でサンプルのプログラムを動かそうと色々頑張ったけどできなかった。


XcodeのOrganizerでダウンロードしたProvisionをインストールしたときに、

A valid signing identity matching this profile could not be found in your keychain

と表示されてコンパイル時に認証ができない状態だった。

しかしAppleの公式ドキュメントを読みながら、
一から登録し直したら実機で動かせました。


原因は昨日の日記の

10.証明書をダブルクリックするとKeychainが起動するのでSystemで2個インストール

Systemでインストールしていたのが原因っぽい。
Loginでインストールし直したら動いた。


f:id:kazupyong:20090728110600p:image

f:id:kazupyong:20090728110559p:image

これからどんどん開発を進めていこう!