objective-c 中的对象初始化
object init in objective-c
#import "Page.h"
@implementation Page
-(instancetype)init{
self = [super init];
if (self) {
self.firstPage =[[Page alloc]init];
self.choiceA = [[Page alloc]init];
self.choiceB = [[Page alloc]init];
}
return self;
}
@end
我是 Objective-C 的新手。
错误:exc_bad_access代码=2
我的代码有什么问题?谢谢
正如@HotLicks 在他的评论中所述,问题是无限递归。如果您是编程新手,我建议您阅读 this article on recursion。本质上,递归就是方法调用自身。在您的代码中,当您调用 [[Page alloc]init]
时,它会无限调用 init
随后导致堆栈溢出。
#import "Page.h"
@implementation Page
-(instancetype)init{
self = [super init];
if (self) {
self.firstPage =[[Page alloc]init];
self.choiceA = [[Page alloc]init];
self.choiceB = [[Page alloc]init];
}
return self;
}
@end
我是 Objective-C 的新手。
错误:exc_bad_access代码=2
我的代码有什么问题?谢谢
正如@HotLicks 在他的评论中所述,问题是无限递归。如果您是编程新手,我建议您阅读 this article on recursion。本质上,递归就是方法调用自身。在您的代码中,当您调用 [[Page alloc]init]
时,它会无限调用 init
随后导致堆栈溢出。