Objective c 为什么编译器会说我没有';t声明了我的变量?
我在Xcode中得到一个错误,它说“whatEverVariable是未声明的”,这发生在.m文件内部,也发生在类本身外部。我已经在.h文件的大括号内声明了该变量,并使用@property和@synthesis访问该变量。然而,我有时会在.m文件中,甚至在我导入了包含变量的类的其他类中,出现上述错误。我是否遗漏了Objective-C的一些内容?我想我要问的是,如果事情被宣布了,为什么会不宣布呢 此外,我正在获取“按钮可能不会响应“setTitle”,因为这是一个错误,也可能是一个不推荐使用的错误,或者是“setTitle:forState:”的错误,因为我不想使用它 我想举个例子,但我真的认为我在这里遗漏了一些明显的东西。有没有人对导致错误的原因有任何想法?对不起,这么笼统,但我必须是个白痴或什么的 这是说“picturesInArray未声明”Objective c 为什么编译器会说我没有';t声明了我的变量?,objective-c,cocoa,Objective C,Cocoa,我在Xcode中得到一个错误,它说“whatEverVariable是未声明的”,这发生在.m文件内部,也发生在类本身外部。我已经在.h文件的大括号内声明了该变量,并使用@property和@synthesis访问该变量。然而,我有时会在.m文件中,甚至在我导入了包含变量的类的其他类中,出现上述错误。我是否遗漏了Objective-C的一些内容?我想我要问的是,如果事情被宣布了,为什么会不宣布呢 此外,我正在获取“按钮可能不会响应“setTitle”,因为这是一个错误,也可能是一个不推荐使用的错
#导入
@界面图片:NSObject{
NSMUTABLEARRY*picturesInArray;
}
@属性(非原子,保留)NSMutableArray*picturesInArray;
-(iAction)按下图片按钮:(id)发送方;
@结束
#导入“Pictures.h”
@实施图片
@合成图像序列;
-(iAction)pictureButtonPressed:(id)发送方{
如果(pictureIndex>=[picturesInArray计数]| | pictureIndex<0){
图片索引=0;
[imageView setImage:[picturesInArray对象索引:pictureIndex];
[图像视图设置需要显示];
}
}
您能发布示例代码吗
我的猜测是,您没有在某个点上声明对象/变量类型whatEverVariable。请确保您的标头如下所示:
MyClass.h:
@interface MyClass : NSObject
{
NSString* whatEverVariable;
}
@property(readwrite, assign) NSString* whatEverVariable;
@end
MyClass.m:
@implementation MyClass
//whatever methods
@synthesize whatEverVariable;
@end
请注意,在@property中,您再次声明了变量的类型
对于按钮,请确保其为NSButton类型
另外,您导入了吗?这会导入很多诸如NSButton之类的标题。您能发布示例代码吗 我的猜测是,您没有在某个点上声明对象/变量类型whatEverVariable。请确保您的标头如下所示: MyClass.h:
@interface MyClass : NSObject
{
NSString* whatEverVariable;
}
@property(readwrite, assign) NSString* whatEverVariable;
@end
MyClass.m:
@implementation MyClass
//whatever methods
@synthesize whatEverVariable;
@end
请注意,在@property中,您再次声明了变量的类型
对于按钮,请确保其为NSButton类型
还有,你们导入了吗?这会导入很多像NSButton这样的标题。这是说“picturesInArray未声明”,上面的注释很难阅读
#import <Foundation/Foundation.h>
@interface Pictures : NSObject {
NSMutableArray *picturesInArray;
}
@property (nonatomic, retain) NSMutableArray *picturesInArray;
-(IBAction)pictureButtonPressed:(id)sender;
@end
#import "Pictures.h"
@implementation Pictures
@synthesize picturesInArray;
-(IBAction)pictureButtonPressed:(id)sender {
if (pictureIndex >= [picturesInArray count] || pictureIndex < 0) {
pictureIndex = 0;
[imageView setImage:[picturesInArray objectAtIndex:pictureIndex]];
[imageView setNeedsDisplay];
}
}
#导入
@界面图片:NSObject{
NSMUTABLEARRY*picturesInArray;
}
@属性(非原子,保留)NSMutableArray*picturesInArray;
-(iAction)按下图片按钮:(id)发送方;
@结束
#导入“Pictures.h”
@实施图片
@合成图像序列;
-(iAction)pictureButtonPressed:(id)发送方{
如果(pictureIndex>=[picturesInArray计数]| | pictureIndex<0){
图片索引=0;
[imageView setImage:[picturesInArray对象索引:pictureIndex];
[图像视图设置需要显示];
}
}
这是说“picturesInArray未声明”上面的注释“很抱歉将其放入”使其难以阅读
#import <Foundation/Foundation.h>
@interface Pictures : NSObject {
NSMutableArray *picturesInArray;
}
@property (nonatomic, retain) NSMutableArray *picturesInArray;
-(IBAction)pictureButtonPressed:(id)sender;
@end
#import "Pictures.h"
@implementation Pictures
@synthesize picturesInArray;
-(IBAction)pictureButtonPressed:(id)sender {
if (pictureIndex >= [picturesInArray count] || pictureIndex < 0) {
pictureIndex = 0;
[imageView setImage:[picturesInArray objectAtIndex:pictureIndex]];
[imageView setNeedsDisplay];
}
}
#导入
@界面图片:NSObject{
NSMUTABLEARRY*picturesInArray;
}
@属性(非原子,保留)NSMutableArray*picturesInArray;
-(iAction)按下图片按钮:(id)发送方;
@结束
#导入“Pictures.h”
@实施图片
@合成图像序列;
-(iAction)pictureButtonPressed:(id)发送方{
如果(pictureIndex>=[picturesInArray计数]| | pictureIndex<0){
图片索引=0;
[imageView setImage:[picturesInArray对象索引:pictureIndex];
[图像视图设置需要显示];
}
}
这表示“picturesInArray
未声明”
您确定它没有说“pictureIndex
未声明”?因为这是您显示的代码中未声明的变量
这表示“picturesInArray
未声明”
您确定它没有说“
pictureIndex
未声明”?因为这是您显示的代码中未声明的变量。我肯定您遗漏了一些明显的内容,但如果没有看到任何代码,很难准确地说出您犯了什么错误。您还应该在标题中发布问题摘要。您能想象登录到SO后,首页上有50个条目,全部都是这样写的吗我有个问题。“?您一定错过了实现块末尾的@end。显然,您没有显示全部代码。能给我们提供这个类的完整代码吗?否则,请去掉当前示例中的所有冗余变量,并尝试仅在定义picturesInArray的情况下对其进行编译。我确信您遗漏了一些明显的内容,但如果没有看到任何代码,就很难准确地说出您犯了什么错误。您还应该在标题中发布问题的摘要。你能想象一下登录SO,首页上有50个条目都写着“我有一个问题”吗?你一定错过了实现块末尾的@end。显然,您没有显示全部代码。能给我们提供这个类的完整代码吗?或者,去除当前样本中的所有冗余变量,并尝试仅在定义picturesInArray的情况下编译它。这表示“picturesInArray未声明”#导入@interface Pictures:NSObject{NSMutableArray*picturesInArray;}@property(非原子,保留)NSMutableArray*picturesInArray-(iAction)按下图片按钮:(id)发送方@结束#导入“Pictures.h”@implementation Pictures@synthesis picturesInArray-(iAction)pictureButtonPressed:(id)发送方{if(pictureIndex>=[picturesInArray计数]| | Picture