2011-06-21 10 views
1

次のコードでは、どのオブジェクトがnilに設定されているのか不思議です。ここには何のオブジェクトがありますか?

- (void)ViewWillAppear:(BOOL)メソッド。自己はnil'edですか?またはすべてのオブジェクトです

- (IBAction)showCurrentTime:(id)送信者メソッドがnilされていない、または両方ともnilされていますか?

-(IBAction)showCurrentTime:(id)sender 
{ 
    NSDate *now = [NSDate date]; 
    static NSDateFormatter *formatter = nil; 
    if (!formatter) { 
     formatter = [[ NSDateFormatter alloc ] init ]; 
     [formatter setTimeStyle:NSDateFormatterShortStyle]; 

    } 
    [timeLabel setText:[formatter stringFromDate:now]]; 

} 
-(void)viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    [self showCurrentTime:nil]; 


} 
+0

timeLabelが初期化されているコードを投稿できますか?私はあなたのディスプレイのテキストフィールドに接続されたIBOutletだと思いますか? – Perception

答えて

2

nilに設定されているものはありません。 senderパラメータを参照している場合、nilで、送信者オブジェクトとしてはとなります。これは、任意の変数をnilに割り当てていません。あなたの例では、送信者は決して使用されないので、nilは効果がありません。

ただし、このパラメータを使用すると、メッセージをnilに渡すというデフォルトの動作を得ることができます。つまり、呼び出しが無効であれば、何も起こりません。オブジェクトを返すと何も返されません。

2

[self showCurrentTime:nil];という行を参照している場合は、メソッドがsenderパラメータを必要とするため、単にnilを送信します。 。送信者が必要なケースがない場合(たとえInterface Builderのメソッドを使用している場合でも)、メソッド名の ":(id)sender"部分を削除しても問題ありません。

関連する問題