【iPhone】【iOS4】 iOS4になって、動かなくなったアプリが多発してる原因について

iOS4がリリースされて一晩明けた今、「iOS4にしたら、このアプリが動かなくなった」、「このアプリも動かない」などと話題になっているみたいです (※)「iOS4 動かない」などの検索キーワードでTwitterで検索すると、たくさん見つかります 今回の原因の多くのケースは、「iOS4になって、OS側のバグが修正された事」なのではないかと思います。OS自体の挙動にバグがある場合、アプリにバグがあ続きを読むiOS4がリリースされて一晩明けた今、「iOS4にしたら、このアプリが動かなくなった」、「このアプリも動かない」などと話題になっているみたいです (※)「iOS4 動かない」などの検索キーワードでTwitterで検索すると、たくさん見つかります 今回の原因の多くのケースは、「iOS4になって、OS側のバグが修正された事」なのではないかと思います。OS自体の挙動にバグがある場合、アプリにバグがあっても結果として動いてしまうケースがあります。これを「OS側がバグを修正してしまう」と、アプリ本来のバグが表面化して動かないアプリが多発するという話です。 Windowsなどではこの種の問題の経験から「OSの挙動に不具合があっても、遭えて直さない(互換性は残す)」という不文律というか経験則があったのですが、今回の件はさすがAppleだなーと思いました。 (※)WindowsとiPhone/Macを比較して、「Windowsの方がまし」と言う様な書き方はちょっと違うのかもしれませんが、「過去は切り捨ててでも新しい事/正しい事をやる」というAppleのポリシーの副作用みたいな話なので仕方ないって言えば仕方ない話なのかもしれません・・・ 本件のきっかけになった、私の作ったアプリの不具合に関して 「非常に初歩的なミス」(バグ)のコーディングに関する部分からトゥギャってますが、恥をしのんでここから書かないと、話の本質が伝わらないと思いますので正直に書きました。 つまり、「この程度の、ちょっとしたバグがあるけど、動いていたアプリ」が iOS4でOS側の挙動が正常に改善されてしまったおかげで動かなくなったアプリが世界中で頻発してるというのが、現在の状況です 「なんで事前に動作確認しなかったんだ?そんなの基本でしょ?」と言われそうなので補足しておきます。 iOS4開発対応のSDK XCode3.2.3では、iPhone3用のプロジェクトがまともに読み込めない状態でして、(これは、設定の問題だったのですが、ここで苦労してる人も多かったです)、 更にiOS4対応のXCode3.2.3で開発したiPhone 3アプリはAppleに申請できないという状況もしばらく続いた上、これらの情報が(少なくともiOS4の正式版が一般公開される今日までは?)NDA扱いで技術情報の一般交換ができなかった為、「XCode3.2.3の正式版が出れば、以前のソースコードも普通に読めるだろう」、「これまで通り互換性はあるだろう」と思っていたら、iOS4がユーザーにダウンロードされた時点で、「問題は何も解決してない」、「あると思っていた互換性がなかった」事から開発現場は大騒ぎって状況なんじゃないかなーと思います。 事前にちゃんと対応できていた開発者さんも多かったとは思うんですけど、パニくってる開発者さんも今回は少なからずいたかと思います。
iOS 4 iPhone
khb02323 15612view 1コメント
26
ログインして広告を非表示にする
  • 西村誠一 @khb02323 2010-06-22 14:06:29
    @iphone_dev_jp iOS3迄は動いていたソフトがiOS4では落ちるトラブルがありまして、[timer invalidate]して[timer release]してtimer=nilするロジックの[timer release]をした瞬間に落ちます。何故だろう・・
  • Naoki Kuzumi @kudzu_naoki 2010-06-22 14:13:44
    @iphone_dev_jp @knb02323 NSTimerはメインスレッドで使う場合通常自分でretainCountを増やしません。初期化がinitほげほげではなくtimerほげほメソッドですよね? なので、releaseすること自体が間違いかと思われます。
  • 西村誠一 @khb02323 2010-06-22 14:19:42
    @iphone_dev_jp timerの件、ご解答ありがとうございました。大変参考になりました
  • iphone_dev_jp @iphone_dev_jp 2010-06-22 14:20:02
    release のしすぎでしょう。 3.0 で動いてたのはたまたま。普通 NSTimer は RunLoop が retain するので、自分で retain, release は必要ないです。 [@k_katsumi]
  • 西村誠一 @khb02323 2010-06-22 14:23:23
    @k_katsumi ありがとうございます。大変参考になりました
  • 西村誠一 @khb02323 2010-06-22 14:46:36
    (たぶん世界中で起こっている)今回のiOS4で動かないアプリが出ている原因が分かりました。「iOS4でOSの不具合を直したのが原因」です。具体的には「これまでバグのあるアプリでも「iPhone3までは動いてた」のが「iOS4でOSのバグを直しちゃった」ので動かなくなったと
  • 西村誠一 @khb02323 2010-06-22 14:47:44
    Windowsとか他のOSで散々経験してきた話なんですが、「それやっちゃうと、動かないアプリが頻発するから、不具合挙動含めてOSの挙動は互換性を残す」というのが不文律っていうかよくあるケースなんですが、なんというかもう、さすがAppleとしか言い様がないですね・・
  • 西村誠一 @khb02323 2010-06-22 14:49:08
    「俺についてこい、ついてこない奴は置いていくぞ」っていうAppleらしいヒトコマでした。・・・まあ、アプリ側でバグロジックがあったのが原因っちゃ原因なので、こっちも悪いんですけどねー・・・正直、うちのアプリだけで不具合でたとかだったら恐怖の1日でしたが、他でも多発してて助かった
  • 西村誠一 @khb02323 2010-06-22 14:49:29
    とりあえず、うちのアプリは「1行のコメントアウト」でiOS4の不具合解消しました・・・

コメント

  • undo @undosystem 2010-06-23 19:26:05
    APIの非互換より、情報交換が規制されて問題に辿り着くことすら出来なかったのが問題ですよね。GM出てもNDA解除されないなんて、デメリットが大きすぎる。

カテゴリーからまとめを探す

「IT・Web」に関連するカテゴリー

ログインして広告を非表示にする
ログインして広告を非表示にする