2011-08-27 114 views
1

我正在尝试使自定义类在我的iPhone应用程序中保存数据。我想要一个包含2个变量的盒子对象,它是状态(作为一个int)以及它是否被填充。 (为bool)在我的.h我有这样的:使用原始数据类型创建自定义类Obj-c

#import <Foundation/Foundation.h> 

@interface box : NSObject 
{ 
    BOOL filled; 
    int state; 
} 

- (id)init; 
-(void)setState:(int)thestate; 
-(BOOL)isFilled; 

-(BOOL)filled; 
-(int)state; 
-(void)setFilled:(BOOL)input; 
-(void)setState:(int)input; 
@end 

,在我的.m我有这样的:

#import "box.h" 

@implementation box 

- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     [self setState:0]; 
     [self setFilled:NO]; 
    } 

    return self; 
} 

-(void) setState:(int)input 
{ 
    state = input; 
    [self setFilled:YES]; 
    if (state == 0) 
    { 
     [self setFilled:NO]; 
    } 
} 

-(int) getState 
{ 
    return self.state; 
} 

-(BOOL)filled 
{ 
    return self.filled; 
} 

-(void)setFilled:(BOOL)input 
{ 
    filled = input; 
} 
@end 

我做我自己的getter和setter方法,因为当我做@property (nonatomic) int state;我有问题。无论何时调用getState,我都会收到一个Program收到的信号:“SIGABRT”错误。控制台说:

-[box state]: unrecognized selector sent to instance 0x4e51970 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[box state]: unrecognized selector sent to instance 0x4e51970' 

如何解决此错误? 谢谢。

回答

4

您是否在类实现中使用@synthesize来综合属性?

编辑当一个属性合成时,默认情况下,获取者将是propname而不是getPropname

+0

是的,我合成它。我会尝试改变它回到物业的工作,我想我从那时起改变了一些东西。 – Cole

+0

“@属性”方式奏效。对不起,我提交了一个完整的问题来解决这个简单的问题。 – Cole