/ / Objective C-ifステートメントの異常な条件式-Objective-c

目的C - if文の珍しい条件式 - objective-c

私はOOPに比較的慣れていないので、私と一緒に裸にしてください。

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

Objective-Cの達人がこのような通常の状態に遭遇したことはありますか?ありがとうございました

回答:

回答№1の場合は3

これについては何も珍しいことはありません。

sender.currentTitle ボタンのタイトルであるNSStringを返します。お気づきのように、これはと同等です [sender currentTitle]。どちらの場合も、あなたは currentTitle メソッドon sender。このため、 [sender.currentTitle length] その length 呼び出しの結果であるNSStringのメソッド currentTitlesender 文字列の長さである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より大きいのと同じです。