代码之家  ›  专栏  ›  技术社区  ›  Jack

如何不用点符号写这个

  •  0
  • Jack  · 技术社区  · 15 年前

    请有人帮我写下以下内容,不要用点符号:

    self.bounds.size.width
    

    我试过了 [[[self bounds] size] width] ,但这会导致错误。有什么想法吗?

    2 回复  |  直到 15 年前
        1
  •  7
  •   bbum    15 年前

    你对点语法的模糊性有了新的认识。

    你想要:

    [self bounds].size.width
    

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

        2
  •  5
  •   hotpaw2    15 年前

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

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

    这样,对象消息和C结构成员访问之间的区别就被显式地分离了。