gpt4 book ai didi

iOS:EXC_BAD_ACCESS(代码=2,地址=0x42)

转载 作者:行者123 更新时间:2023-12-01 19:00:57 28 4
gpt4 key购买 nike

我有一个应该保存一些数据的类:

标题:

#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

主文件:
#import "OeffnungsZeit2.h"
#import "Behandler.h"
#import "Tag.h"


@implementation OeffnungsZeit2

@dynamic offen_stunde;
@dynamic offen_minute;
@dynamic geschlossen_stunde;
@dynamic geschlossen_minute;

-(void)setTag:(Tag *)tag{
self.tag = tag;
}
-(Tag*)getTag{
return self.tag;
}

-(void)setBehandler:(Behandler *)behandler{
self.behandler = behandler;
}
-(Behandler*)getBehandler{
return self.behandler;
}
@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_BAD_ACCESS错误。

谁能提示我,为什么这是错误的?我对iOS很陌生,从来没有写过一个保存数据的类......

最佳答案

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

-(void)setTag:(Tag *)tag{
self.tag = tag;
}

是无限递归,因为 self.tag = tag是写 [self setTag:tag] 的另一种语法.

如果您使用的是最新的 Xcode,您需要做的就是删除 tag 的 getter 和 setter 的声明和定义。和 behandler您手动添加的。编译器将生成等效的代码,但没有无限递归。

注意:在某些情况下,您需要访问“支持”自动生成的属性的变量。按照惯例,该变量的名称是带有下划线前缀的属性名称。您可以在 @synthesize 中覆盖它属性的指令。

关于iOS:EXC_BAD_ACCESS(代码=2,地址=0x42),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23013140/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com