0

我有我的默认初始化程序:

- (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

我不知道为什么会这样,但会很感激任何帮助。

4

2 回答 2

2

而不是使用:

self.issueManager

尝试:

issueManager = [[IssueManager alloc] init];

请记住,使用点表示法只是使用@property 和@synthesize 提供的访问器/设置器方法。在您的 init 方法中,您不应使用访问器/设置器方法。

于 2012-10-18T14:20:41.733 回答
0

我不会在其中使用访问器-init*(阅读此内容:为什么我不应该在 init/dealloc 中使用 Objective C 2.0 访问器?

苹果也对此发表了声明。

尝试改为:

_issueManager = [[IssueManager alloc] init];
于 2012-10-18T14:24:37.990 回答