1

と の 2 つのクラスがRequisitionGetdetailsありRequisitionReleaseます。#import USAdditions.h.m ファイル内の両方

クラス ファイル: ReqDetailViewController.mI#import RequisitionGetdetails.hと RequisitionRelease.hでコンパイルすると、USAdditions.h で定義されたすべてのオブジェクトのインターフェイス定義が重複します。

のみを使用します#import。コードのどこにも #include がありません。#import は、このような重複した定義を処理するはずだと思っていました。コメントアウトする#import RequisitionRelease.hと、重複エラーがなくなり、コンパイラーUSAdittions.hが他の2つのクラスを介して2回定義を取得しているが、重複を無視していないことがわかります。

#import の仕組みを理解するのは間違っていますか? これを修正する方法はありますか?同様の投稿をいくつか見たことがありますが、どの解決策も適用されず、助けにもなりませんでした。

4

2 に答える 2

2

ファイルではなくファイルをインポートしていると確信していますか?.h.m

ファイルをコピーすると、コンパイラ#import.mファイル全体をほとんどコピーして貼り付け、メソッドとクラスの再定義につながります。

私は過去にこのように噛まれたことがあります。

于 2013-09-20T18:36:27.690 に答える
0

Benoit の回答以外に、あなたの .h ファイルには@implementations が含まれていますか? その場合、クラスを 2 つの翻訳単位で (宣言するだけでなく) 定義しています。クラス定義は最終的に両方の .o ファイルになり、リンクすると重複した定義が得られます。

ヘッダー ファイルには、定義ではなく宣言のみを含める必要があります。

于 2013-09-20T23:08:40.210 に答える