我创建了一个使用委托模式的类,并将其放在静态库中。然后,我创建了一个演示应用程序来测试库。该演示只有一个视图控制器,在.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.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)
当我从ViewController.m中删除#import "Authentication.h
时,我也明白了。
答案 0 :(得分:1)
在您的班级.h文件中尝试#import "Authentication.h"
,而不是您的.m文件