iOS - 在指定的初始化程序中分配给iVar,结果为nil iVar

时间:2012-03-06 17:11:33

标签: iphone ios ipad uiviewcontroller initialization

我面临一个非常奇怪的问题。 假设我的UIViewController的子类有它的初始化器:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
managedObjectContext:(NSManagedObjectContext *)context
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        self.managedObjectContext = context;
    }
    return self;
}

以下是我如何声明self.managedObjectContext:

@interface identificationViewController ()
@property (retain, nonatomic) NSManagedObjectContext *managedObjectContext;
//...
@end

然后合成

@synthesize managedObjectContext = _managedObjectContext;

最后在AppDelegate中我这样做:

identificationViewController *identificationVC = [[identificationViewController 
alloc]    initWithNibName:@"identificationViewController" bundle:nil     
managedObjectContext:self.managedObjectContext];

self.window.rootViewController = identificationVC;
[identificationVC release];

当我在identifyViewController中调试“init ..”时,参数上下文与nil不同,但是在=之后,self.managedObjectContext仍然等于nil !!

我不明白为什么。你有什么想法吗?

提前致谢。

编辑:我在.m中声明了managedObjectContext而不是.h

1 个答案:

答案 0 :(得分:0)

XCode 4.3中存在一个错误。即使变量视图或打印告诉你你的iVar = 0x00000000 @“nil”,情况也不是这样。如果你使用NSLog(@“%@”)来回显你的ivar,它会准确地显示你的内容。