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 被定义为一个 CGRect,它是苹果文档中的一个结构,因此点表示法是必要的吗?

  2. 第二行的右值是方括号和点的组合,因为shareApplication是UIApplication的类方法,所以会发送消息,但是statusBarFrame被定义为CGRect的属性,即结构体,所以需要点符号?

任何有助于澄清这些观点的帮助将不胜感激。

如果我完全误解了并且您实际上可以将其转换为括号表示法,请您解释一下原因。

谢谢

4

2 回答 2

1

1) 2.0 之前的 Objective-c 只有结构的点符号?是的,据我所知。
2) Objective-c 2.0 为属性引入了点符号。这允许通过点符号访问设置器/获取器吗?是的。
3) 消息不能发送到结构?正确,发送消息相当于调用消息发送到的对象中的方法。
4)switchViewFrame.origin.y不能转换为括号符号,因为switchViewFrame它被定义为 a CGRect,这是struct苹果文档中的 a ,因此点符号是必要的吗?是的。
5)rvalue第二行是括号和点的组合,因为shareApplication是 的类方法UIApplication,因此发送了一条消息,但是statusBarFrame被定义为CGRectie a的属性,struct因此需要点符号?否:statusBarFrameUIApplication对象的属性。但statusBarFrame是 一个struct与 组件originsize, 其中 也是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 回答