【问题标题】:CGAffineTransform gives expected expression errorCGAffineTransform 给出预期的表达式错误
【发布时间】:2014-01-28 09:53:37
【问题描述】:

IU 在 Java 方面经验丰富,但对 Objective C 很陌生,所以这可能非常愚蠢。尽管如此,我一直在苦苦挣扎,寻找从以下代码中得到预期表达式错误的原因。

CGAffineTransform move = CGAffineTransformMakeTranslation(middleX, middleY);
[shapePath applyTransform:move];
[shapePath stroke];
[shapePath fill];

shapePath 是 UIBezierPath,middleX 和 middleY 是 CFFloats。

错误是一个“解析问题”,它只是在上面的第一行说“预期的表达式”

【问题讨论】:

  • 如果你能分享你遇到的错误会更容易帮助你
  • 这是一个解析错误,只是说“预期的表达式”(如问题中所述)
  • 我假设您已经在该代码上方定义了两个名为 middleXmiddleY 的变量,但只是将它们排除在问题之外,对吧?

标签: ios objective-c


【解决方案1】:

编辑

有了你在 switch 语句中使用它的额外上下文,我知道出了什么问题。

你不能在 switch 语句中声明变量而不用大括号括起来。您可以在 this answer 中了解原因(简而言之,它们没有引入新的作用域)。

例如,创建这样的变量会导致您面临的编译器错误:

但如果你在 case 周围添加大括号(如下所示),那么你可以在该范围内创建变量


原答案

您在该问题中显示的代码没有问题。以下代码适用于我,没有任何编译器错误:

UIBezierPath *shapePath = [UIBezierPath bezierPath];
CGFloat middleX = 10.0;
CGFloat middleY = 10.0;

CGAffineTransform move = CGAffineTransformMakeTranslation(middleX, middleY);
[shapePath applyTransform:move];
[shapePath stroke];
[shapePath fill];

您应该在上面的问题中查找其他语法错误。

例如,作为suggested in this answer,您可能在代码的其他位置缺少右括号 (})。

【讨论】:

  • 我不知道为什么它不起作用。请参阅下面的答案... 2 小时花费在此上 :( Tack så mycket för hjälpen ändå David. Hoppas du får en bra dag!
【解决方案2】:

此代码位于 switch 子句中。当我在它之外声明 move 变量时,它消失了。虽然不知道为什么。现在可以了。

【讨论】:

猜你喜欢
  • 2020-12-08
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多