Objective C协议 - 请一些愚蠢的基本帮助

时间:2014-01-13 18:32:01

标签: objective-c protocols

当我尝试添加第二个协议时,我遇到了问题。第一个工作正常。所以我创建了一个测试应用程序来尝试使用两个协议(因为我还在学习如何使用协议)。我不知道为什么我在理解协议方面遇到这么多麻烦。我甚至经历了教程,仍然在与他们斗争。

当我尝试添加第二个协议并使用它时的第一个问题我收到了以下错误:

  

从不兼容的类型'* const _strong'

分配给'id'

但是,现在让我们忽略,因为我的测试应用程序在我的测试应用中为这两个协议提供了这个错误:

  

无法找到协议声明

所以,我会发布我的测试应用程序的代码,因为在解决更棘手的问题之前我必须理解基础知识

DelegateA标头

#import <Foundation/Foundation.h>

@protocol IDDelegateADelegate <NSObject>
@end

@interface IDDelegateA : NSObject
//other properties here
@property (nonatomic, assign) id<IDDelegateADelegate> delegateA;
@end

委托实施

#import "IDDelegateA.h"

@implementation IDDelegateA
@synthesize delegateA;
//other methods and properties go here
@end

DelegateB标头

#import <Foundation/Foundation.h>

@protocol IDDelegeteBDelegate <NSObject>
@end

@interface IDDelegeteB : NSObject
//other properties here
@property (nonatomic, assign) id<IDDelegeteBDelegate> delegateB;
@end

委托实施

#import "IDDelegeteB.h"

@implementation IDDelegeteB
@synthesize delegateB;
//other methods and properties go here
@end

使用这些代理的测试类标头

#import <Foundation/Foundation.h>
#import "IDDelegateA.h"
#import "IDDelegeteB.h"

@interface IDTestingDelegates : NSObject <IDDelegateA, IDDelegateB>

@end

就在这里,我收到了两位代表的Cannot find protocol declaration错误。我一直在搜索SO以及浏览教程和示例代码。关于SO的最佳答案是here。但我只是没有得到我做错的事。有人可以指出我在这里缺少什么吗?

2 个答案:

答案 0 :(得分:2)

@interface IDTestingDelegates : NSObject <IDDelegateA, IDDelegateB>

应该是

@interface IDTestingDelegates : NSObject <IDDelegateADelegate, IDDelegeteBDelegate>

您必须在<...>中列出协议,而不是接口。

答案 1 :(得分:1)

@interface声明了一个类,而ClassName <X>语法则期望X是一个协议(在IDTestingDelegates的声明中)。

不确定你在这里想要达到的目的。