use*_*567 1 cocoa objective-c forward-declaration
最小示例"Test.h":
#import <Foundation/Foundation.h>
@protocol CallBack <NSObject>
-(void)method;
@end
@interface Test : NSObject
-(void)callback:(CallBack*)theCallback;
@end
Run Code Online (Sandbox Code Playgroud)
和相应的"Test.m":
#import "Test.h"
@implementation Test
-(void)callback:(CallBack*)theCallback
{
[theCallback method];
}
@end
Run Code Online (Sandbox Code Playgroud)
这将为.m和.h文件中的CallBack参数提供"预期类型"错误.由于CallBack协议是在其他所有内容之前定义的,所以我无法理解为什么编译器无法找到它.如果我添加一个前向定义@class CallBack; 在头文件的开头,它将给我一个"接收器类型'CallBack',例如消息是一个前向声明"行[theCallback方法]的错误.
为什么编译器找不到协议?
引用符合CallBack
协议的对象的正确语法是id<CallBack>
.
因此,您可能需要:
@protocol CallBack <NSObject>
-(void)method;
@end
@interface Test : NSObject
-(void)callback:(id <CallBack>)theCallback;
@end
Run Code Online (Sandbox Code Playgroud)
和
@implementation Test
-(void)callback:(id <CallBack>)theCallback
{
[theCallback method];
}
@end
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅使用Objective-C编程指南中的使用协议.
归档时间: |
|
查看次数: |
2722 次 |
最近记录: |