- (IBAction)touchCardButton:(UIButton *)sender
{
if ([sender.currentTitle length]) {
UIImage *cardImage = [UIImage imageNamed:@"cardback"];
[sender setBackgroundImage:cardImage forState:UIControlStateNormal];
[sender setTitle:@"" forState:UIControlStateNormal];
}
}
据我所知,如果[sender.currentTitle length]非零,if语句将继续。然而,这里涉及的语法令我感到困惑。
[sender currentTitle]
或在dot.syntax
中sender.currentTitle
检查“发件人”按钮的标题。但这里的长度是多少?长度是一种方法吗?长度是否返回值?它是否相当于:
[[sender currentTitle] length]
答案 0 :(得分:3)
这没什么不寻常的。
sender.currentTitle
返回一个NSString,它是按钮的标题。如您所知,这相当于[sender currentTitle]
。在这两种情况下,您都在currentTitle
上调用sender
方法。因此,[sender.currentTitle length]
调用NSString上的length
方法,该方法是currentTitle
上调用sender
的结果,并返回一个字符串长度的NSUInteger。
另一种写作方式是:
NSString *title = sender.currentTitle;
if ([title length] > 0) {
// Do something if the length is not zero.
}
或进一步细分:
NSString *title = sender.currentTitle;
NSUInteger length = [title length];
if (length > 0) {
// Do something if the length is not zero.
}
如果你只是这样做了:
if ([sender currentTitle]) {
// Do something if the string is not nil.
}
如果按钮的currentTitle不是nil
,那么你的条件是真的,不与长度>相同0
答案 1 :(得分:0)
在Objective-C中,.
只是用于调用setter / getter的语法糖,它不是像Swift中那样的字段访问器(这个问题早于Swift吗?)。
在您的代码段中,调用currentTitle
的getter,并在该字符串上调用length
方法。