iOS:EXC\u错误访问(代码=2,地址=0x42)

iOS:EXC\u错误访问(代码=2,地址=0x42),ios,Ios,我有一个类,它应该包含一些数据: 标题: #import <Foundation/Foundation.h> @class Behandler, Tag; @interface OeffnungsZeit2 : NSObject @property (nonatomic, retain) NSNumber * offen_stunde; @property (nonatomic, retain) NSNumber * offen_minute; @property (nonat

我有一个类,它应该包含一些数据:

标题:

#import <Foundation/Foundation.h>

@class Behandler, Tag;

@interface OeffnungsZeit2 : NSObject

@property (nonatomic, retain) NSNumber * offen_stunde;
@property (nonatomic, retain) NSNumber * offen_minute;
@property (nonatomic, retain) NSNumber * geschlossen_stunde;
@property (nonatomic, retain) NSNumber * geschlossen_minute;
@property (nonatomic, retain) Tag *tag;
@property (nonatomic, retain) Behandler *behandler;
-(void)setTag:(Tag *)tag;
-(Tag *)getTag;
-(void)setBehandler:(Behandler *)behandler;
-(Behandler *)getBehandler;
@end
当我尝试访问它时,在以下行中的某个位置:

NSArray *tage = [self fetchTageWithNummer:openDay];
Tag *tag = [tage objectAtIndex:0];
// create an OeffnungsZeit2 object and add it to our array
OeffnungsZeit2 *oeffnungsZeit2 = [[OeffnungsZeit2 alloc] init];
[oeffnungsZeit2 setTag:tag];
oeffnungsZeit2.offen_stunde = [NSNumber numberWithInt:[openHours intValue]];
oeffnungsZeit2.offen_minute = [NSNumber numberWithInt:[openMins intValue]];
oeffnungsZeit2.geschlossen_stunde = [NSNumber numberWithInt:[closeHours intValue]];
oeffnungsZeit2.geschlossen_minute = [NSNumber numberWithInt:[closeMins intValue]];
[self.oeffnungsZeiten addObject:oeffnungsZeit2];
我收到一个
ECX\u访问错误


谁能告诉我,为什么这是错误的?我对iOS非常陌生,从来没有编写过一个保存数据的类…

当getter/setter调用自己时,您似乎遇到了堆栈溢出错误。例如,此代码

-(void)setTag:(Tag *)tag{
    self.tag = tag;
}
是无限递归,因为
self.tag=tag
是编写
[self-setTag:tag]
的另一种语法

如果您使用的是最新的Xcode,那么只需删除手动添加的
标记
行为处理程序
的getter和setter的声明和定义。编译器将生成等价的代码,但没有无限递归


注意:当您需要访问“支持”自动生成的属性的变量时,存在合法的情况。按照惯例,该变量的名称是以下划线为前缀的属性名称。您可以在属性的
@synthesis
指令中重写它。

删除了所有@dynamic和accessor方法,它可以工作。。。德克萨斯州
-(void)setTag:(Tag *)tag{
    self.tag = tag;
}