私は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のメソッド 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より大きいのと同じです。