我正在尝试在 Leopard 下的项目中构建集群插件。我有以下两个问题。
在项目中接口(interface)类定义为
@interface ClusteringController : NSWindowController
{
.......
.....
....
}
@end.
该类在实现类中使用前向声明:
@class ClusteringController;
然后在一个函数中它被用作:
- (long) filterImage:(NSString*) menuName
{
ClusteringController *cluster = [[ClusteringController alloc] init];
[cluster showWindow:self];
return 0;
}
当我构建这个项目时,它会产生警告:
warning: receiver 'ClusteringController' is a forward class and corresponding @interface may not exist
此外还产生了一个警告:
warning: no '-updateProxyWhenReconnect' method found
以下代码行会出现此警告:
if(delegate) [delegate updateProxyWhenReconnect];
有人可以帮助我克服这些警告吗?
最佳答案
当头文件将在接口(interface)之后导入时,将使用前向声明。在我看来,您在类本身的接口(interface)之后使用了 @class 指令。
前向类声明的正常使用如下所示:
#import "SomeSuperClass.h"
@class Forwardclass;
@interface SomeClass : SomeSuperClass
{
Forwardclass anIvar;
}
@property Forwardclass anIvar;
@end
#import "SomeClass.h"
#import "ForwardClass.h"
@implementation SomeClass
@synthesize anIvar;
-(void) setAnIvar:(ForwardClass *) aForwardClass;
@end
@class 指令从未在实现 (.m) 文件中使用。
关于objective-c - Cocoa:构建警告,转发声明的类和 @interface 可能不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2386676/