我面临一个非常奇怪的问题。 假设我的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
答案 0 :(得分:0)
XCode 4.3中存在一个错误。即使变量视图或打印告诉你你的iVar = 0x00000000 @“nil”,情况也不是这样。如果你使用NSLog(@“%@”)来回显你的ivar,它会准确地显示你的内容。