iOS - назначение iVar в указанном результате инициализатора в ноль iVar - PullRequest
0 голосов
/ 06 марта 2012

Я столкнулся с действительно странной проблемой.Допустим, у меня есть мой подкласс 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];

Когда я отлаживаю "init .." в identityViewController, контекст параметра отличается от nil, но только после =, self.managedObjectContext по-прежнему равен nil!!

Не понимаю почему.У вас есть идея?

Заранее спасибо.

РЕДАКТИРОВАТЬ: Я объявил управляемыйObjectContext в .m, а не .h

1 Ответ

0 голосов
/ 07 марта 2012

В XCode 4.3 есть ошибка. Даже если в представлении переменных или в распечатке указано, что iVar = 0x00000000 @ "nil", это не так. Если вы используете NSLog (@ "% @") для отображения вашего ивара, он покажет вам именно содержимое.

...