iPhoneアプリ開発メモ

・AdHocでの配布に関して:
昨日はAdHocではまってました. ので, メモ.

大体はこんな感じで良いらしい.
作る側 : http://chikura.fprog.com/index.php?UID=1230138141
貰う側 : http://d.hatena.ne.jp/yositosi/20090724/p1

iPhone実機にインストールしてみると, Splashが表示されてすぐ落ちる.
オーガナイザからiPhoneのクラッシュログを見てもクラッシュした形跡は無い.
コンソールを眺めてみると,

posix_spawnp("/var/mobile/Applications/XXXXXXXX-XXXXXX-XXXX.../app_name.app/app_name", ...): Permission denied

じゃあそいつにパーミションやれば良いんでしょ, と, インストール前のapp_name.appの中に入ってlsかましてあげるとやっぱりapp_nameは644になってるのでめんどいので777にしてあげる. そしてインストールすると動いた.

調べてると
http://www.iphonedevsdk.com/forum/iphone-sdk-development/17217-adhoc-distribution-springboard-error.html
ここに行き着いたんだけど, よく分からず.
他に調べてるとOSX関連ではよくある模様.
http://hacksignal.posterous.com/?tag=iphonesdk
によると, Windowsでは動くらしい.

で,
http://d.hatena.ne.jp/bellx2/20071111
ここに, OSXでのトラブルながら, StuffItで解凍したら出来た, と.

圧縮か. と思い, プロヴィジョニングとappを圧縮してファイルを送ると出来た.
つまり,
 圧縮しないでappを送る
 → パーミションが勝手に644になる
 → \(^o^)/
ということらしい. 確かに, OSXのhoge.appというのは実体は単なるディレクトリで, 呼び出されるときに中の実行ファイルを呼び出す. でも, Windowsであればパーミション関係無い気もする.
パーミションを保存する形で圧縮して送れば関係無い, ということですね.
一応今回はStuffItでzip圧縮してStuffItで解凍したけど, 多分デフォルトのアーカイヴマネージャでもおkのはず.
言われれば確かにそうなんだけど書いてて欲しいよね…

・画像はpngで:
画像を大量に読み込むアプリを開発してるわけですが, jpgでは無くてpngを使え, ということ.
サイズはでかくなりますが(現状だとjpgの2〜4倍くらいになってる)読み込みとかレンダリングは早い. らしい. Instrumentsで調べてみると, 確かにpngでも負荷は掛かるんだけど負荷が掛かってる時間が短い.
その理由はcopypngっちゅうコマンドで最適化pngが作られるかららしい.
http://son-son.sakura.ne.jp/programming/iphone_sdk_png.html
へぇ, へぇ, へぇ.

・UIImageViewはUIControlを継承していない, らしい:
ここらへんはまだ詳しく見てませんが, UIImageViewはUIControlを継承していないのでaddTargetを受けません.
が,
http://www.iphonedevsdk.com/forum/iphone-sdk-development/4826-make-uiimageview-receive-actions.html
ここによると, UIImageViewはUIControlを実装しているので, と書いてある. iPhoneOS2.xの頃は継承してたんですかね?

ついでに, UIImageViewのサブクラスを作ってtouchesEnded等を実装するとタッチは取れます. それはUIResponderを継承しているからですね.

UIImageViewに動的にtouchesEndedを実装する方法は無いんですかねぇ.

代替案として, UIButtonを使って画像貼れば良いじゃんってのがありますが, ごもっとも. 現状それに変えてます.