2012-03-06 11 views
-1

私は本当に奇妙な問題に直面しています。のは、それが初期化子だと私はのUIViewControllerの私のサブクラスを持っているとしましょう :iOS - 指定されたイニシャライザでiVarに割り当てるとiVarがゼロになります

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

そしてAppDelegate私に最後に

@synthesize managedObjectContext = _managedObjectContext; 

を合成これを行う:

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

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

identityViewControllerの "init .."をデバッグすると、パラメータコンテキストはnilと異なりますが、=の直後では、self.managedObjectContextはまだnilと同じです!!

なぜか分かりません。アイデアはありますか?

ありがとうございます。

EDIT:私はXCodeの4.3のバグがあります.Mない.hの

+0

これがnullかどうかを判断するには、gdbで出力したのでしょうか、それともデバッガの値を見ましたか?値を更新するにはしばしば時間がかかることがわかりました.gdb istの方がはるかに優れています(変数を右クリックして "印刷の説明"がその仕事をします) – LordT

+0

クラスを大文字にしてください。ココアでは、命名と大文字の使用は大変重要です。 –

+0

'self(self)'行に 'self'がnil以外であるか? –

答えて

0

でmanagedObjectContextを宣言しました。変数ビューまたは印刷でiVar = 0x00000000 @ "nil"と表示されても、そうではありません。 NSLog(@ "%@")を使用してivarをエコーすると、コンテンツが正確に表示されます。

関連する問題