デリゲート パターンを使用するクラスを作成し、それを静的ライブラリに配置しました。次に、ライブラリをテストするデモ アプリを作成しました。デモにはビュー コントローラーが 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.h
ViewController.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.h
ViewController.m からも削除すると、それが得られます。