web-dev-qa-db-ja.com

iOS 5とARC、またはMRCを備えた以前のバージョンをターゲットにする方が良いですか?

私は個人的にiOS 5についてはあまり知りませんが、自動参照カウント(ARC)を使用すると、以前のオペレーティングシステムのメモリ管理の問題の多くを取り除くことができるようです。

それで、iOS5をターゲットにする(そして最新のiOSデバイスでのみ実行できるアプリを作成する)のが良いですか、それとも彼女がiOS 4またはiOS 3をターゲットにするのが良いので、Objective-Cのメモリ管理の基本を理解していますか?彼女がiOS 5に飛び込むことで見逃す可能性があるiOS開発の重要な側面はありますか?

6

メモリ管理が心配

ARCは天の恵みです。すべての問題を解決するわけではありませんが、Mac OS Xですべてを自分で行うか、ガベージコレクションへの短い迂回を行うよりもはるかに優れています。

留意すべき点が2つあります。

  • それはコンパイラの機能です:XcodeはiOS 4ターゲットへのビルドのためのARCサポートを提供します1
  • IOS 5を対象としても、オプションです。手動参照カウント(MRC)について詳しく知りたい場合は、iOS 5を対象としてもできます。

しかし、ARCはメモリ管理の仕組みを理解する能力を奪うのではなく、releaseretainをどこにでも宣言しなければならないという退屈さを取り除きます。 ジャスティン スタックオーバーフローについて 良い要約を示す ARCと手動参照カウント(MRC)の違い:

MRCを学びたくない場合は、最初にARCを試してみるとよいでしょう。多くの人が、MRCの一般的な慣習に苦労している、または無視しようとしています(例:静的アナライザーに多数のobjc開発者を紹介しました)。これらの問題を回避したい場合、ARCは理解を延期することを許可します。 MRC、ARC、GCのいずれであっても、参照カウントとオブジェクトの有効期間と関係を理解し​​ないと、重要なobjcプログラムを作成することはできません。 ARCとGCは、ソースから実装を削除するだけで、ほとんどの場合、正しいことを行います。 ARCとGCでは、いくつかのガイダンスを提供する必要があります。

ARCを使用する必要があるかどうかに加えて、OSバージョンのサポートを検討する必要があります。そのバージョンを使用している人がそれほど多くない場合、バージョン固有の機能(弱い参照のゼロ化など)に集中することは本当に意味がありますか? ?

さらに悪いことに、誰もがiOS 3を使用している場合、ARCを開始できるようになるまで、どれくらい待つ必要がありますか?

これは、デバイスのサポートと市場シェアという2つのことに帰着します。

デバイスのサポート

ありがたいことに、iOS開発に関する開発者にとっての利点の1つは、ソフトウェアの最新バージョンが古いデバイスで実行できることです。通常、少なくとも2年前に遡ります。

したがって、iOS 5をターゲットにする場合は、次のデバイスをターゲットにすることができます。

  • iPhone 4S(2011年10月リリース)
  • iPad 2(2011年3月リリース)
  • iPod touch(第4世代、2009年9月リリース)
  • iPhone 4(2010年6月リリース)
  • iPad(2010年4月リリース)
  • iPod touch(2009年9月リリースの第3世代)
  • iPhone 3G S(2009年6月リリース)

これはオプションの大きなセットです。 iOS 4.2をターゲットにすると、iPhone 3Gが2008年6月にリリースされて以来、すべてのデバイスを攻撃できます。

市場占有率

これはもう1つの質問になります。iOS5 SDK以外のものを学ぶことに時間を費やす必要があります。それは、何をしたいかによって異なります。

最新かつ最高のものに焦点を当てたい場合は、最新のSDKで利用可能なすべてのきちんとした機能を使用して、市場シェア(いまのところ)をいまいましい:ぜひお試しください。

市場シェアを今すぐ最大化したいのであれば、もう数か月先を待ちます。

Instapaper(非常に人気のあるiOSアプリ)の作成者であるMarco Armentは、彼の使用統計を時々公開し、数日前にリリースしました 最新のレポート 。その中で彼は、iOS 5は45.1/48%のiPad/iPhone市場シェアを持ち、iOS 4.2(まだiOS 5にアップグレードされていないCDMA iPhone 4sに必要)は97/97.2%の市場シェアを持っていると述べています。

一般的に、潜在的な市場の97%をヒットすることは「十分に近い」です。これは、iOS開発だけでなく、Web開発の経験則としても見てきました。

ただし、検討する必要があるのは、開発サイクルの期間です。数か月の発売を計画していない場合は、潜在的な市場シェアの大部分を狙っていても、iOS 5は悪くありません。

iOSユーザーは、さまざまな理由から、他のプラットフォームよりもはるかに速くアップグレードする傾向があり、iOS 4.xからiOS 5へのアップグレードが異なる傾向にあると信じる理由はありません。 iOS 4.2の市場シェアを基準にすると、それは1年前にリリースされただけです。来年の10月にiOS 5が90%の範囲に入ると考えるのは不合理ではありません。

結論

メモリ管理についてあまり心配しないでください。ARCは非常に便利ですが、以前のバージョンからの大きなパラダイムシフトではありません。代わりに、他の機能とサポートの問題を心配してください。今日発売していて、可能な限り最大の市場シェアを獲得する必要がある場合は、iOS 4をターゲットにし、MRCの使用を検討してください。それ以外の場合は、iOS 5をターゲットにして、ARCの使用を検討してください。

1警告: 弱い参照のゼロ化 のように、<iOS 5をターゲットにする必要がある場合、一部の機能を失うことになります。 ARC全体を使いたい場合は、iOS 5をターゲットにした方がよいでしょう。

15
user8

1)真面目なプログラマーとして、MRCの完全な理解を見逃すことはできません。

2)特定の状況(CF ...)では、それを知っている必要があります。

3)ARCは非常に細かく、便利です。 (私はmalloc/freeから来ましたが、感謝します。)

4)Apple最後のwwdc2012からの指示(私はそこにいた..)はARCを使用していました!実際、すべての新しいコードはARC用に書かれています。

0
ingconti

約500,000のアプリがARCなしで作成され、その多くは子供たちによるものです。また、iOS 5ではない(まだ)デバイスを使用している数百万人の潜在的なアプリユーザー。多くの開発者は、iOS 5に厳密にジャンプする前に、その数が潜在的な市場シェアの小さい部分になるのを待っています。 ARCを使用する将来のアプリでバグを追跡するときに役立ちます。

そのため、現時点では、今日のアプリにはMRCを使用し、将来のアプリにはARCを使用して、両方を学ぶことをお勧めします。

0
hotpaw2