0

デリゲート パターンを使用するクラスを作成し、それを静的ライブラリに配置しました。次に、ライブラリをテストするデモ アプリを作成しました。デモにはビュー コントローラーが 1 つだけあり、.h ファイルには次のように記述されています。

@interface ViewController : UIViewController <AuthenticationDelegate>

@property (nonatomic, retain) IBOutlet UITextField *usernameTextField;
@property (nonatomic, retain) IBOutlet UITextField *passwordTextField;

@end

コンパイルすると、ファイルの最初の行に次のようなエラーが表示されます。

「AuthenticationDelegate」のプロトコル宣言が見つかりません。

しかし、同じView Controllerの.mファイルには、次のものがあります。

#import "Authentication.h"
#import "ViewController.h"

ファイル「Authentication.h」は、私の静的ライブラリの唯一のヘッダー ファイルであり、デリゲート クラスを宣言します。

@class AuthenticationProvider;
@protocol AuthenticationDelegate <NSObject>

@optional

- (void)provider:(AuthenticationProvider *)provider didReplyWithResponse:(AuthenticationProviderResponse)response;

@end

どこが間違っていますか?

アップデート:

#import "Authentication.hViewController.hを入れると、次のようになります。

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_AuthenticationProvider", referenced from:
      objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

#import "Authentication.hViewController.m からも削除すると、それが得られます。

4

1 に答える 1

1

#import "Authentication.h".m ファイルではなく、classes .h ファイルで試してください。

于 2012-07-12T18:14:33.110 に答える