我在Xcode中收到一条错误,说“whatEverVariable未声明”这发生在.m文件内部,也发生在类本身之外。我已经在.h文件的花括号内声明了变量,并使用@property和@synthesize来访问变量。但是我有时会在.m文件中得到上面的错误,甚至在其他我已经#imported包含变量的类的类中。我在这里遗漏了一些关于Objective-C的东西或者什么?我想我要问的是,如果声明它们,为什么事情会被宣布为未宣布。
此外,我得到“按钮可能不会响应”setTitle“作为错误,因为这已被弃用或”setTitle:forState:“,因为我不想使用它。
我会发一个例子,但我真的觉得我在这里错过了一些明显的东西。有没有人对导致错误的原因有什么想法?很抱歉这么一般,但我必须是一个白痴或什么?
这是说“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];
}
}
答案 0 :(得分:2)
这是说“
picturesInArray
未声明”
你确定它不是说“pictureIndex
未声明”吗?因为这是你所展示的代码中未声明的变量。
答案 1 :(得分:0)
您可以发布示例代码吗?
我的猜测是你没有声明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等事情导入了很多标题。
答案 2 :(得分:-1)
这就是说“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];
}
}