2011-08-27 162 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