2009-12-13 114 views
1

我在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]; 
    }  
} 
+1

我相信你缺少一些明显的东西,但很难准确地分辨出你在没有看到任何代码的情况下犯的错误。 – Chuck 2009-12-13 19:50:57

+1

您还应该在标题中发布问题摘要。你能想象登录到SO,头版有50条条目都会说“我有问题”。 – 2009-12-13 20:01:26

+0

您必须在实现块的末尾错过@end。显然,你并没有显示整个代码。可以为我们提供这个课程的完整代码吗?否则,剥离所有冗余变量的当前样本,并尝试仅在定义了picturesInArray的情况下对其进行编译。 – 2009-12-13 21:59:20

回答

-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]; 
    }  
} 
+0

这对我来说很好。如果我添加“int pictureIndex; NSImageView * imageView;”到.h文件,这对我来说没有任何错误或警告。你使用什么编译器? – 2009-12-13 20:57:52

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之类的东西导入了很多头文件。

+0

这是说“picturesInArray未申报” #import <基金会/基金会。h> @interface图片:NSObject { \t NSMutableArray * picturesInArray; } @property(nonatomic,retain)NSMutableArray * picturesInArray; - (IBAction)pictureButtonPressed:(id)sender; @end #import“Pictures.h” @implementation图片 @synthesize picturesInArray; (IBAction)pictureButtonPressed:(id)sender if(pictureIndex> = [picturesInArray count] || pictureIndex <0) { pictureIndex = 0; \t [imageView setImage:[picturesInArray objectAtIndex:pictureIndex]]; [imageView setNeedsDisplay]; } \t } – I00I 2009-12-13 20:22:26

2

这话说” picturesInArray是未申报”

你确定它不是说“pictureIndex未申报”吗?因为这是你所展示的代码中未申报的变量。

相关问题