使用原始数据类型Obj-c创建自定义类

时间:2011-08-27 18:34:00

标签: iphone objective-c class

我正在尝试制作一个自定义类来保存我的iPhone应用中的数据。我想要一个盒子对象,它将容纳2个变量,它的状态(作为一个int)以及它是否被填充。 (作为一个博尔)在我的.h我有这个:

#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

我正在制作自己的制定者和吸气者,因为当我做@property (nonatomic) int state;时,我遇到了问题。每当调用getState时,我都会收到一个程序接收信号:“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'

如何修复此错误? 感谢。

1 个答案:

答案 0 :(得分:4)

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

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