我制作了一个使用委托模式的类,并将其放在静态库中。然后,我创建了一个演示应用程序来测试库。该演示仅具有一个视图控制器,在.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时得到了。

最佳答案

在类.h文件而不是.m文件中尝试#import "Authentication.h"

关于objective-c - 在Xcode中无法使用的静态库中进行委托(delegate),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11457958/

10-13 09:41