7

I've got some code where my classes inherit from a superclass, and everything has been working fine till now. I'm getting an error whenever I try to use any of the superclass variables, saying that they are undeclared (first use in this function). It's only happening in one of my subclasses, & it looks exactly the same as the others. I'm wondering if there's anything obvious which I should know about (being quite new to Objective-C). The basic code is like -

@interface mySuperClass : UIViewController {

BOOL myVar;

}

Then -

@interface mySubClass : mySuperClass {

}

@implementation mySubClass {

-(void)someMethod {

    myVar = YES; // error here

}

@end

Any help much appreciated - if you need more info, let me know! Thanks.

4

4 回答 4

4

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

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

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

同样,编译器错误非常具有误导性,因此调试起来确实很困难。尽管在 99.9% 的情况下,错误都是我自己造成的。:)

于 2011-06-10T19:12:04.363 回答
2

I can't see anything wrong with the code you've pasted. My first guess would be that you're not importing the mySuperClass .h file properly. Ie you're missing

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

In mySubClass.h, or mySubClass.m

于 2011-05-12T11:15:25.953 回答
1

我几个星期都遇到同样的问题

编译到 iOS 设备时出现“变量未声明”错误,但不适用于模拟器

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

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

于 2011-08-04T12:57:43.090 回答
1

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

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

因此,请检查您的属性定义。感谢第 8 篇文章中的螺丝带提供的解决方案:-)

编辑:哎呀,克里斯的答案非常相似,除了错别字与删除。

于 2011-06-21T14:24:43.737 回答