0

Xcode3.1に組み込まれている古いiOSアプリケーションをいくつかのiOS6機能で更新するように依頼されました。

xcode 4.5を使用してソースをビルドしようとすると、プロジェクト内にブール値または同様の値を返すことになっているメソッドで単純なreturnステートメントが使用される場所が多数あるため、コンパイルが拒否されます。

Xcode 3.1はそれを許可し、4.5は許可しません。途中のどこかで、アップルはこの制限を追加することにしました。

私の問題は、コードが20,000行を超えるコードであり、開発者が実行を停止するメソッドが必要な場合は常に単純なreturnステートメントを使用していることです。コンパイラは、これらのエラーの最初のエラーが発生するとコンパイルを停止するため、一度に1つずつ修正してから、別のエラーを見つけるためだけに再度コンパイルを試みる必要があります。私はそのようなreturnステートメントの数百を修正するために2時間のように試みました。

これらのエラーを警告として変更し、Xcode 4.5でこのアプリを実行できるようにするコンパイラフラグまたはXcodeビルド設定はありますか?

これはXcodeがスローする正確なエラーです:

/Users.../Classes/WaterMaps.m:5471:5:非voidメソッド'initWithParams:mass:radius:totalAssetInfo:'は値を返す必要があります

助けてください..

4

1 に答える 1

1

これは Xcode とは関係ありませんが、コンパイラとは関係ありません。Apple がこの制限を追加したのではなく、コンパイラは Apple のものではなく、OpenSource プロジェクト ( GCCおよびLLVM/clang ) です。

100 個の返品ステートメントを修正するのに 2 時間かかった理由をお尋ねしてもよろしいですか? そのような return ステートメントを 100 個修正するのに 5 分以上かかることはありません。

  1. どこかに書いreturn 0;て、それを選択して、クリップボード ( ) にコピーして、CMD+Cもう一度削除します。
  2. どこreturn;かに書き込んで選択し、ヒットCMD+Eして検索バッファにコピーし、もう一度削除します。
  3. ソースコードに移動します。
  4. CMD+G「次を探す」という意味のヒット。
  5. 見つかった式がエラーとしてマークされていない場合は、(4) に進みます。
  6. CMD+Vで上書きreturn;するヒット(貼り付け) return 0;
  7. (4)にたどり着きました。

CMD+Gしたがって、基本的には、ファイルをジャンプするためにヒットし続けCMD+V、エラーが表示されるたびに. 次のファイルにすばやく移動するには、Xcode でエラー ビューを開きます。

ここに画像の説明を入力

最初のファイルの最初のエラーを選択し、CMD+G手順がファイルの最後に到達するたびCMD+'に、リストの次のファイルの最初の問題にジャンプする を押します。開発者として、キーボードをより効果的に使用する方法を実際に学ぶ必要があります。キーボードに手を置いておくと、キーボードとマウス/タッチパッド/トラックボールなどの間を行き来するよりも、何百倍も生産性が向上します。

そして、コード行の量 (「20,000 行を超えるコード」) はどのように関連しているのでしょうか? 関連するのは返品明細書の量です。

あなたのコードは現在深刻に壊れています。この壊れたコードをコンパイルする方法を考えるのに時間を費やすのではなく、修正することを強くお勧めします。一度修正されると、永久に機能し、次回コンパイラが更新されて最後のハックが機能しなくなったときに再び壊れることはありません。

つまり、return のみを入力した場合、ブール値または int 値を返すメソッドに対して何を返したいかをコンパイラがどのように知るのでしょうか? 提案された「return 0;」数値 (浮動小数点を含む) とブール値 (0 = false/NO) を返すすべてのメソッドで機能し、コンパイラを再び満足させます。その場合、古代の C コンパイラによって返されたのと同じ値です。

Xcode 3.1 でさえ、これらの return ステートメントはあらゆる場所で警告を生成する必要があることに注意してください。真面目な開発者として、常にすべての警告をエラーとして扱います。プロジェクトに警告は表示されません。警告は、何か問題があるか、少なくとも何か問題がある可能性があることを示しており、それは、外に出て修正する必要があることを意味します。コードを変更することで、ほとんどすべての警告を消すことができます。そのため、コンパイラで警告を無視したり無効にしたりするのではなく、警告を修正してください。今日、多くの企業はゼロ警告ポリシーを採用しており、コードが 1 つの警告しか生成しない場合、そのコードは拒否されます。このコードの作成者がすべての警告をエラーとして扱っていた場合、それらを修正する必要はありません。

于 2013-01-29T11:49:25.100 に答える