1

Xcode で [編集] -> [リファクタリング] を使用して、リリースなどを含む非 ARC プロジェクトを Objective-C ARC に変換しようとしましたが、変換中に SBJson パーサー ソース ファイルでエラーが発生しました:「このソース ファイルは、ARC を有効にしてコンパイルする必要があります。 !」。ただし、ARCバージョンであるSBJson 3.1を使用しています。

だから私は何が間違っているのか理解していません。誰かがこれを手伝ってくれますか?

PS回答のアドバイスに従おうとしましたが、結果は同じです:

ここに画像の説明を入力

ここに画像の説明を入力

ご覧のとおり、このフラグを追加しても役に立ちませんでした。

4

4 に答える 4

5

エラー メッセージは SBJson からのものです。

NSObject+SBJson.m :

#if !__has_feature(objc_arc)
#error "This source file must be compiled with ARC enabled!"
#endif

推測として、リファクタリング タスクは、内部のすべてのオブジェクトを検査するために、ARC なしでプロジェクトをコンパイルしようとします。

このリファクタリング ツールについてはよくわかりません。一部のファイルをリファクタリングから除外する方法があるかもしれません。それが失敗した場合は、リファクタリングが完了するまで SBJson ファイルでこれらの行をコメントアウトしてみてください。その後、プロジェクトのリファクタリングが完了したら、SBJson ファイルを復元できます。

于 2013-01-13T16:57:36.893 に答える
4

プロジェクト設定に移動し、[ビルド フェーズ] をクリックします。「コンパイル ソース」を開き、すべての SBJson ファイルを強調表示して、1 つをダブルクリックします。と入力し-fobjc-arcます。

于 2013-01-13T16:44:10.743 に答える
3

それを行う別の方法であり、SBJson のドキュメントで推奨されています。

http://deshartman.wordpress.com/2011/09/02/configuring-sbjson-framework-for-xcode-4-2/

基本的に、プロジェクト内に sbjson フレームワークをプロジェクトとして含め、バイナリをフレームワークにリンクします。その後、フレームワークは個別にコンパイルされるため、ARC の競合は発生しません。

SBJson.xcodeproj をプロジェクトにドラッグする方法が重要であることに注意してください。ワークスペースを作成する別のプロジェクトとして作成されるのではなく、プロジェクトのファイル ツリーにあることを確認してください。上記のリンクは、それがどのように見えるかのスクリーンショットを示しています。SBJson.xcodeproj をプロジェクトにドラッグした後、正しく表示されるように Xcode を再起動する必要があったことに注意してください。

もう 1 つの方法は、ワークスペースを使用することです。両方のプロジェクトを持つワークスペースを作成し、同様の方法で sbjson フレームワークをリンクします。これを行ったとき、上記のリンクに示されているように「ターゲットの依存関係」に何も追加する必要はありませんでしたが、「ライブラリとバイナリをリンクする」にプロジェクトを追加する必要がありました。このセットアップが私のマシンでどのように見えるかを次に示します。「SBJSONTestWorkspaces」は、SBJson を使用するプロジェクトの名前です。

ここに画像の説明を入力

ワークスペースに関するドキュメントは次のとおりです。

http://developer.apple.com/library/mac/#featuredarticles/XcodeConcepts/Concept-Workspace.html#//apple_ref/doc/uid/TP40009328-CH7

于 2013-04-04T18:53:45.523 に答える
0

プロジェクトは ARC で作成されるため、xcode はすべてのファイルが ARC 互換であると想定します。ただし、SBJSON ファイルは ARC 標準に準拠していてはなりません。これらのファイルを ARC チェックから除外する必要があります。これは、ARC をチェックする必要のないファイルを選択することで実行できます。これは、プロジェクト設定 -> ビルド フェーズ -> ソースのコンパイルに移動すると実行できます。ここにさまざまなフラグを追加できる SBJSON のファイルがあります。ARC チェックを無視するには、'-fobjc-arc' フラグを追加する必要があります。ファイルをダブルクリックすると、新しいウィンドウがポップアップし、そのウィンドウに上記のフラグが追加されます。

于 2013-01-13T17:01:41.777 に答える