2011年10月30日日曜日

XcodeのVersionとCFBundleのバージョンの関係

XcodeはV4.1から、従来のVersionという項目がVersionとBuildに分かれた。
このとき、旧来のVersion値がBuildの項目に入力されたが、このあたりの関係と意味が
今1つよく理解出来てなかった。が、前回のアプリ審査提出時に引っかかったので
理解させられることとなった。

結論から言えば、

TARGETSのVersion = CFBundleShortVersionString
         Build   = CFBundleVersion
 
となっている。一般ソフトではVersionの方が上でBuildの方が下の概念だと思うが、
Apple方言ではそうではないわけだ。 
 
アプリのバージョンアップをするとき、このCFBundleVersionが以前のバージョンより
大きくなければエラーが出てアップロードできない。
要注意。
 

2011年10月29日土曜日

画像透過の制約

UIImageやUIButtonで画像を使った場合、PNGを使うと透過を使うことが出来る。

しかし、2つ以上のそれが重なるとき、両方の画像がフルカラーだと透過がうまくいかない。
確認したのは2つであるが、上側に下画像の背景が透過しなくなった。

上側を256色に減色したらうまくいった。

このバグはシミュレーター上では発生せず、実機でのみ発生する。
iOS4.3と5.0どちらでも同様である。

・・・2012/01/31追記
フルカラーで作成されていても透過するデータもあった。
少なくとも、Windows上の花子フォトレタッチで作ったデータはだめ。
データの格納方式に違いがあるのかも知れない。

・・・2012/11/30追記
iOS6でも同様なことを確認。透過しないならしないでいいから、シミュレーター上でも再現して。

Xcode4.2の改良点

Xcode4.2ではいくつかの改良点がある。
私が把握しているのは以下の通り。

(1)iOS上で使えないフォントに対するチェックが厳しくなった
XcodeではMac上にイントールしているフォントが全て選択できるが、
iOS上では使えない物も当然ある。従来はそのチェックがなかったが、
4.2ではチェックが厳しくなった。
ただし、 フォントの設定にはバグが居て、SystemからCustomへの変更が直接できない。
System→SystemBold→Custom→フォント選択という手順を通らなければならない。

(2)コンパイラの文法チェックが厳しくなった。
これは良い点。@class 名前とどっかで記述してるけど、それが実は構造体名だったとき、
「同じ名前で別の定義があるぞ」(意訳)と表示してくれる。
@classは宣言だけで実行には関係ないけど、バグには違いない。

(3)従来XcodeはUSB有線接続したデバイスのみデバッグ対象にしたが、WiFi接続下の機械も使えるようになった。
→しかし、この機能をONにしていると、シミュレーターでの実行を指示しているのに勝手に実機で実行したりするのであまり使えない。よって、うちではOFFに変更。

(4)iOS5対応

2011年10月28日金曜日

Xcode4.2のバグ

Xcode4.2.0(for SnowLeopard)にはいくつかバグが居る。
私が把握しているのは以下の通り。

(1)Settings.bundleが編集できない
Xcode4.1以前で編集するしかない
4.1でSettings.bundleを開いたまま終了し、4.2で同じプロジェクトを開くと、その内容が表示された状態で起動する。
が、ここで編集するとファイルが破壊されることがある。

(2)iPadを含むアプリをArchiveしようとすると、必ず証明書が無効という警告が出る
しかし、実際にはそのArchiveでアップロードできるので問題ない。

(3)タブをまとめようとすると落ちることがある
ファイルを1つ開き、何も操作しないまま別のファイルを開いてタブをまとめようとすると落ちるような気がする。
また、タブをたくさん開いていると落ちやすい。

(4)追加された機能に新たにキーバインドが設定されているため、それと重複する設定があった場合、表面上、注意も何もなしにキーが無効になってしまう
標準のキーのまま使っているなら問題ないのかもしれないけど、キーバインドを変更していてると、
Xcode4.2にしたとたん一部操作が出来なくなることがある。これは、新規の機能に割り付けられたキーバインドと重複しているせい。Preferenceからキーバインドを見て、重複警告が出ている部分を修正する。

(5)CodeSigningの設定が外れている(事があるので)、再設定が必要

(6)エディタでソースの一部を折りたたんでいる状態で編集すると落ちやすい。
1ソースファイル内で折りたたんでいる場所が多いと落ちやすいような気がする。
これは4.2だけじゃなく、4.1でも発生する。
折りたたみは、現状ほぼ使えない状態だと言える。

(7)条件付きコンパイルがあるとき、ブレークポイントの位置がずれる

#if 0 // 実際にはコンパイル条件によりここがコンパイルされないとき
ソース←ここにbreakpointが付いていると
#endif

-(id)method
{
    // ここの最初の実行行でbreakPointが効いてしまう(止まる)
}
このブレークポイントは無視すべき。

(8)プログラムを停止したとき、タブ名と表示されている内容が食い違うことがある
現在選択中のタブ内にプログラムを停止したときにはそのソースと停止した場所が表示されるが、このときに、タブ名(表示しているソースファイル名)を変更しないときがある。
だから、「一体ここはどこ?」となることがある。

(9)日本語ファイル/フォルダ名があるとき、gitがCommit出来ない
エラーが発生する。最初からわかっていれば日本語ファイル名は使わなかったが、
後から適応しようとして困った。
フリーウエアの「gitX」では可能なので、併用する。

Xcodeは4になって、あまりにも遅くなり使い物にならなかくなったが(だからずっと3.2.6使ってた)、4.1で改善されてまともに使えるようになった。でもまだバグが散見される。
致命的な問題もあるので、一刻も早いデバッグを望む。

Xcode4.2.1でどうなっているかは未検証。というか、4.2.1のSnowLeopard対応版がまだ出てないので、試しようがない。以前Lionを導入してえらい目に遭ったので、うちではSnowLeopardに戻したから。


ちなみにうちではV4.2/4.1/3.2.6を全部使えるようにしてある。3本までのソースを同時編集することもあるから。便利。

・・・2012/03/11追記

Xcode4.3.1は、またこれはこれで大バグだらけで困った状況にある。
特にシミュレーターがiOS5のデバッグにおいて、一部状況下で全く使い物にならなくなったのが痛い。


アップルはOSといい開発環境といい、もっともっとデバッグに人員を割くべきだ。
儲かってるんだから。

iOS5の隠れた改良点

iOS5の隠れた改良点として、登録名が変えられるというのがある。
iOS4までは初回設定時に登録した名前を変更できないが、
iOS5では、設定>一般>情報>名前で変更できる。

開発機では名称を変えたいときがあるので便利。


・・・プログラミング上の変更(知った部分のみ)・・・

UIActivityIndicatorに色が付けられるようになった
UIBarButtonItemに色が付けられるようになった
UISwitchの形が変わった
Stepperが追加された
Gesture Recognizerが追加され、ジェスチャー判定が簡単にできるようになった

iOSアプリ審査提出時のタイムアウト

AppleのiOSアプリの登録で、画像をアップロードしようとするとにタイムアウトが発生することがある。また、各種情報を書き換えてSubmitするとそのまま止まってしまうことがある。

Firefox v7とv10で発生する。
SafariやFirefox v8/9では発生しなかった。

Chromeではどうなるか未確認。

やはりSafariを使うのが無難かと。

2013/03/01追記
Firefox v18.0でも1回発生したが、一旦ページを抜けて再度入ったらうまく行った。
どうも今1つ不安定な感じがする。

ようやく利用開始

開設以来、ずっと使えてなかったここをようやく利用し始めます。
当面は、情報を雑多に書き留めます。