小编Mat*_*lek的帖子

无法弄清楚'警告:不兼容的Objective-C类型'

我有一个NSObject的子类来实现一个-(id)initWithRootElement:(MyElement *)e方法.NSXMLDocument有一个相同的方法,它采用NSXMLElement.编译时,我收到以下警告:

warning: incompatible Objective-C types 'struct MyElement *', expected 'struct NSXMLElement *' when passing argument 1 of 'initWithRootElement:' from distinct Objective-C type

在这种情况下,我正在使用Xcode 3.2.1在SnowLeopard上使用Clang + LLVM进行编译,但这也适用于Leopard和SnowLeopard上的GCC 4.2.

我不明白为什么当NSXMLDocument必须首先从NSXMLNode继承时,它为我的直接NSObject子类发出警告?它不应该知道-(id)initWithRootElement:(NSXMLElement *)e只适用于与我的课程无关的NSXMLDocument吗?我能理解我是否试图重载该方法,但我不是.请告诉我,我不会发疯...

#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSXMLElement.h>
// Importing this here causes the warning...
// #import <Foundation/NSXMLDocument.h>

typedef NSObject MyElement;

@interface TestClass : NSObject
{
}

- (id)initWithRootElement:(MyElement *)element;
@end

@implementation TestClass
- (id)initWithRootElement:(MyElement *)element { return nil; }
@end

// ...but here it doesn't
// #import <Foundation/NSXMLDocument.h>

int …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c

3
推荐指数
1
解决办法
3678
查看次数

标签 统计

cocoa ×1

objective-c ×1