0

我创建了一个使用委托模式的类,并将其放入静态库中。然后,我创建了一个演示应用程序来测试该库。该演示只有一个视图控制器,在 .h 文件中,我有这个:

@interface ViewController : UIViewController <AuthenticationDelegate>

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

@end

当我编译时,我在文件的第一行得到一个错误,上面写着:

找不到“AuthenticationDelegate”的协议声明。

但是,在同一个视图控制器的 .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.h从 ViewController.m 中删除时,我也明白了。

4

1 回答 1

1

试试#import "Authentication.h"你的类 .h 文件,而不是你的 .m 文件

于 2012-07-12T18:14:33.110 回答