Init不回归自我

时间:2012-10-18 14:14:55

标签: objective-c xcode initialization

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

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

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

2 个答案:

答案 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];