2010-10-08 56 views
0

是否有人可以帮我写以下,不使用点符号:如何在没有点符号写这

self.bounds.size.width 

我已经试过[[[self bounds] size] width],但这会导致错误。有任何想法吗?

+0

您是设置还是获取?你为什么不想用点符号? CGRect和CGSize一样是一个数据结构。 – Ben 2010-10-08 20:28:12

+0

越来越多,我没有理由不使用点符号,但我没有在我的项目中的任何其他地方使用它 - 会很好地保持它的方式 – Jack 2010-10-08 20:30:11

+0

符号看起来像访问结构的成员,所以我不喜欢并避免在我的项目中;一个是我讨厌C++语法的原因 – Ariel 2010-10-08 22:42:21

回答

7

对于点语法的歧义性,您已经有所赘述。

你想:

[self bounds].size.width 

-bounds返回NSRect的C结构。因此,您使用传统的点来访问其中的项目。

+0

非常好 - 非常感谢。我试图避免点符号很长一段时间,而不知道为什么。这已经阐明了它提出的问题。谢谢 – Jack 2010-10-08 20:33:04

5

为了避免混合表示法,我可能更喜欢使用一个本地临时C结构变量:

CGRect myBoundsRect = [ self bounds ]; 
foo = myBoundsRect.size.width; 

这样对象消息和C结构构件之间的差存取明确分离。