Iphone iOS-指定初始值设定项中的iVar赋值将导致nil iVar

Iphone iOS-指定初始值设定项中的iVar赋值将导致nil iVar,iphone,ios,ipad,uiviewcontroller,initialization,Iphone,Ios,Ipad,Uiviewcontroller,Initialization,我面临着一个非常奇怪的问题。 假设我有UIViewController的子类及其初始值设定项: - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil managedObjectContext:(NSManagedObjectContext *)context { self = [super initWithNibName:nibNameOrNil bundle:nibBundleO

我面临着一个非常奇怪的问题。 假设我有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];
当我调试identificationViewController中的“init..”时,参数上下文不同于nil,但就在=,self.managedObjectContext之后仍然等于nil

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

提前谢谢


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

在XCode 4.3中有一个bug。即使变量视图或打印告诉您iVar=0x00000000@“nil”,情况并非如此。如果使用NSLog(@“%@”)回显ivar,它将准确地显示内容。

要确定它是否为空,您是在gdb中打印出来的还是只在调试器中查看值?我们发现,更新这些值通常需要一些时间——“在gdb中保存它们要好得多(右键单击变量,“打印描述”就可以了),请确保将类大写。命名和大写在Cocoa中非常重要。
self
if(self)
行中是否为非零?@Rob Napier-yes-self为非零。“如果我在中有一个断点,它是否会断开。@洛德,我打印了它。”。你有什么想法吗?