关于实例变量&的奇怪错误超

时间:2011-05-12 11:00:50

标签: objective-c compiler-errors superclass

我有一些代码,我的类从超类继承,到目前为止一切正常。每当我尝试使用任何超类变量时,我都会收到错误,说它们是未声明的(首先在此函数中使用)。它只发生在我的一个子类中,&它看起来和其他人完全一样。我想知道是否有任何我应该知道的明显内容(对Objective-C来说是新手)。基本代码就像 -

@interface mySuperClass : UIViewController {

BOOL myVar;

}

然后 -

@interface mySubClass : mySuperClass {

}

@implementation mySubClass {

-(void)someMethod {

    myVar = YES; // error here

}

@end

任何帮助非常感谢 - 如果您需要更多信息,请告诉我们!感谢。

4 个答案:

答案 0 :(得分:4)

我刚刚遇到一个非常类似的奇怪错误,我无法再访问我的超类中的属性,而xcode是givine me编译器错误,说“(*)未声明(首次在此函数中使用)”。但是我过去没有任何问题......

问题是我在.m文件的顶部引入了拼写错误,xcode编译器输出误导了我。具体来说,我有@synthesize语句,其中属性拼写错误,无论是在synthesize语句中还是在headerfile中的相应变量中。

如果您有@synthesize语句或其他声明,请使用精细的齿梳检查它们(即您最近介绍哪些行?),或者甚至注释掉它们的块以查看是否可以再次编译并缩小范围罪魁祸首。

编译器错误再次引起误解,所以调试真的很难。虽然99.9%的时间错误是我自己的错误。 :)

答案 1 :(得分:2)

我看不到你粘贴的代码有什么问题。我的第一个猜测是你没有正确导入mySuperClass .h文件。就是你错过了

#import "mySuperClass.h"    //or #include

在mySubClass.h或mySubClass.m

答案 2 :(得分:1)

我遇到了同样的问题,浪费了几个小时后我终于在我的项目中解决了这个问题:

我重构了我的源并删除了一个成员,但忘了删除.h文件中的@property定义。当我使用超级会员时,这会导致每个地方出错。 BTW:来自super的方法很好。

所以检查你的房产defs。感谢Screwtape在post 8中的解决方案: - )

编辑:哎呀,Kris的回答非常类似,除了拼写错误和删除。

答案 3 :(得分:1)

我有几周的同样问题

"Variable Undeclared" error when compiling to iOS Device, but not for Simulator

我发现的一个解决方案是简单地将编译器从默认的LLVM GCC 4.2更改为LLVM Compiler 2.0(或更改为“Apple LLVM编译器2.1”)。它似乎是编译器中的一个错误,但它只是一个猜测。

如果根本不需要使用GCC编译器,更改它可以快速解决您的问题。