0

プロジェクトをビルドすると、次の警告が表示されます。

ld: warning: instance method 'shareMessage' in category from /Users/attiliopatania/Library/Developer/Xcode/DerivedData/.../Objects-normal/armv7/Place+Factory.o conflicts with same method from another category

私があなたに報告した構造の問題がどこにあるのか理解できません.カテゴリの使い方を間違えているのかもしれません.hファイルで@class宣言のパターンを強制的に使用し、# .m を使用した便利なヘッダー クラスのインポート 誰かが私を助けてくれることを願っています :)

shareMessageは、次のように Place+Factory の親であるクラス Bean.h 内で宣言されたメソッドです。

場所+工場.h

#import "Place.h"

@interface Place (Factory)
...
@end

場所+工場.m

#import "Place+Factory.h"
#import "User+Factory.h"


@implementation Place (Factory)

...

- (NSString*) shareMessage{
     return @"myMessage"
}


...
@end 

注意: User+Factory は PlaceFactory と同じ構造であり、Bean の子でもあります。

Place.h

#import "Bean.h"

@interface Place : Bean
...


@end

Bean.h

#import <Foundation/Foundation.h>
#import "HttpFunction.h"
#import "Usefull.h"
#import "AppManager.h"


@interface Bean : NSObject
...
- (NSString*) shareMessage;


@end

Bean.m

#import "Bean.h"

@implementation Bean 

...

- (NSString*) shareMessage{
    return [self.class description];

}

...
@end

更新:最後に解決しました。.h ファイル内の @ class と .m ファイル内の #インポート順序を処理するすべてのクラスを確認します (これが本当の問題のようです)。

4

1 に答える 1

0

クラス Place はすでにメソッド shareMessage を持っているため、このメソッドを Bean から継承します。@implementation Bean (ファクトリー) を @implementation Bean に変更

于 2013-08-06T06:38:55.283 に答える