2

私はobjective-cを学んでおり、学習の一環として、ドット表記を変換してブラケット表記に戻そうとしています(今のところブラケット表記を好みます)

したがって、私の現在の世界観は次のとおりです。

  1. 2.0 より前の Objective-c には、構造体のみのドット表記がありましたか?
  2. Objective-c 2.0 では、プロパティにドット表記が導入されました。これにより、ドット表記を介してセッター/ゲッターにアクセスできますか?
  3. 構造体にメッセージを送信できませんか?

私が読んでいる本で、以下のコードに出くわしました。最初の数回の試行で、それをブラケット表記に変換するのに惨めに失敗しました。

...
CGRect switchViewFrame = switchView.frame;
switchViewFrame.origin.y += [UIApplication sharedApplication].statusBarFrame.size.height;

もう少し深く掘り下げた結果、次の結論に達しました...

  1. switchViewFrame.origin.y はブラケット表記に変換できません。これは、switchViewFrame が Apples ドキュメントの構造体である CGRect として定義されているため、ドット表記が必要ですか?

  2. 2 行目の右辺値は、shareApplication が UIApplication のクラス メソッドであるため、角かっことドットの組み合わせであり、したがってメッセージが送信されますが、statusBarFrame は CGRect のプロパティ、つまり構造体として定義されているため、ドット表記が必要ですか?

これらの点を明確にするための助けをいただければ幸いです。

私が完全に誤解しており、実際にブラケット表記に変換できる場合は、その理由を説明していただけますか.

ありがとう

4

2 に答える 2

1

1) 2.0 より前の Objective-c には、構造体のみのドット表記がありましたか? はい、私の知る限りでは。
2) Objective-c 2.0 では、プロパティにドット表記が導入されました。これにより、ドット表記を介してセッター/ゲッターにアクセスできますか? はい。
3) 構造体にメッセージを送信できませんか? 正解です。メッセージを送信することは、メッセージの送信先のオブジェクトでメソッドを呼び出すことと同じです。
4)は として定義されているswitchViewFrame.origin.yため、ブラケット表記に変換できません。これはリンゴのドキュメントでは aであり、ドット表記が必要ですか? はい。 5) 2 行目のは のクラス メソッドであるため、括弧とドットの組み合わせであり、したがってメッセージが送信されますが、switchViewFrameCGRectstruct
rvalueshareApplicationUIApplicationstatusBarFrameCGRectie aのプロパティとして定義されているstructため、ドット表記が必要ですか? いいえ:オブジェクトstatusBarFrameのプロパティです。UIApplicationしかしstatusBarFramestructコンポーネントoriginとでありsize、これもstructsです。
だから、あなたはほとんどどこでも正しかった。

于 2013-06-20T15:45:53.353 に答える
0

https://stackoverflow.com/a/10444012/2449268

それを本当によく説明しています。それがあなたの質問に答えてくれることを願っています。

また、以下のようにフレームにブラケット表記を使用することもできます:

CGRect switchViewFrame = switchView.frame; switchViewFrame.origin.y += [[UIApplication sharedApplication] statusBarFrame].size.height;

于 2013-06-20T15:57:38.587 に答える