我有我的默认初始化程序:
- (id)init
{
if ((self = [super init]))
{
}
return self;
}
我只在我的班级中包含了这种方法来跟踪它是否正在执行它的工作,而且据我所知,它是。
Self正在设置,在控制台中我可以看到self的内存地址不是0x0000000。例如,这是我刚试过的一个运行控制台:
self IssueManager * 0x08383ad0
但是,当方法将self返回到此方法时:
- (id)initWithNibName:(NSString *)nibNameOrNil
bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
self.issueManager = [[IssueManager alloc] init];
return self;
}
self.issueManager仍然是一个空指针:
_issueManager IssueManager * 0x00000000
我不知道为什么会这样,但会感激任何帮助。
答案 0 :(得分:2)
而不是使用:
self.issueManager
尝试:
issueManager = [[IssueManager alloc] init];
请记住,使用点表示法只是使用@property和@synthesize提供的访问器/ setter方法。在init方法中,不应使用accessor / setter方法。
答案 1 :(得分:0)
我不会在-init*
中使用访问者(请阅读:Why shouldn't I use Objective C 2.0 accessors in init/dealloc?)
此处还有一份Apple声明。
尝试改为:
_issueManager = [[IssueManager alloc] init];