0

私はiPhoneプログラミングの初心者です。私はこのコードをチュートリアルで見ましたが、それが何を意味するのか理解できませんでした。titleForStateやなどのキーワードについて混乱していinitWithFormatます。

この構文の意味と重要性を理解するのを誰かが助けてくれますか?

-(IBAction)buttonPressed: (id)sender {
    NSString *title = [sender **titleForState**:UIControlStateNormal];
    NSString *newText = [[NSString alloc] **initWithFormat**:
             @"%@ button pressed.", title];
    statusText.text = newText;//statustext is a label 
    [newText release];
}
4

1 に答える 1

1

initwithFormat文字列に変数の値を追加して文字列を変更できます。必要な数の変数を追加できますが、正しいプリミティブ型に対して正しい記号を追加する必要があります。下記は用例です

  NSString *thisIsAString = @"String";
  float thisIsAFloat = 13.9f;
  NSString *strFormat = [[NSString alloc] initWithFormat:@"This is a %@, this is a %f float", thisIsAString, thisIsAFloat];
  NSLog(@"%@", strFormat);

これにより、出力This is a String, this is a 13.9f float通知が生成さfloatれ、NSString値がシンボルに置き換わります。

titleForState、そのメソッドを持つオブジェクトのタイトルを取得しています。これにより、のタイトルが返されます。たとえば、タイトルが「Press」のUIButtonUIControlStateNormalの場合、値「Press」がNSStringタイトルに入力されます。送信者のすべてがメソッドを持っているわけではありませんが、titleForStateこれが表示される理由は、送信者がプリミティブ型であるため、id取得していないものが送信されてtitleForStateアプリがクラッシュした場合にエラーが発生するためです。

于 2012-11-14T10:13:25.640 に答える