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通知floatNSString值已替换符号。

titleForState正在获取具有该方法的对象的标题。这将返回标题,让我们说一个 UIButton 的标题为“Press”,UIControlStateNormal因此值“Press”将被输入到NSString标题中。尽管并非 sender 中的所有内容都具有该方法titleForState,但它会显示的原因是因为 sender 是一种原始类型,id如果发送的东西没有得到titleForState并且您的应用程序将崩溃,则会导致错误。

于 2012-11-14T10:13:25.640 回答