【问题标题】:iPhone Obj-C error: assignment of read-only variable 'prop.149' in XcodeiPhone Obj-C 错误:Xcode 中只读变量“prop.149”的赋值
【发布时间】:2009-07-22 16:22:19
【问题描述】:

我正在使用 Objective-C 编写一个 iPhone 应用程序。

这是 Xcode 给我的错误:

error: assignment of read-only variable 'prop.149'

代码:

// Create CATransition object
CATransition *transition = [CATransition animation];
// Animate over 3/4 of a second
transition.duration = 0.75;
// using the ease in/out timing function
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
// Set transition type
transition.type = kCATransitionPush;
// Next line gives error: assignment of read-only variable 'prop.149'
transition.subtype = (flipsideView.hidden == YES ? kCATransitionFromRight : kCATransitionFromLeft);

错误是什么意思,我该如何解决?

【问题讨论】:

  • 我刚遇到这个错误。 WTH。 (通过使用临时变量修复 - 强制转换方法不起作用。)

标签: iphone objective-c xcode variable-assignment


【解决方案1】:

不知道为什么,但编译器无法推断出三元运算符结果的评估类型。简单地添加一个明确的演员似乎工作:

transition.subtype = (NSString *)(flipsideView.hidden == YES ? kCATransitionFromRight : kCATransitionFromLeft);

我会将此作为编译器错误提交。

【讨论】:

    【解决方案2】:

    该错误表示您正在设置一个只读属性。看起来 CATransition 的子类型属性不是可设置的属性。

    【讨论】:

    • 但是该属性不应该是只读的。下面是文档: subtype 指定一个可选的子类型,指示预定义的基于运动的过渡的方向。 @property(copy) NSString *subtype ViewTransitions 示例项目(来自 Apple)有这一行,工作正常:transition.subtype = subtypes[random() % 4];
    【解决方案3】:

    我同意文档说您应该能够为子类型属性分配一个值。我想知道您分配子类型的代码行是否存在问题。您是否被运算符优先级烧伤?请尝试以下操作:

    transition.subtype = flipsideView.hidden ? kCATransitionFromRight : kCATransitionFromLeft;
    

    【讨论】:

      【解决方案4】:

      这个原始代码失败了:

      transition.subtype = (flipsideView.hidden == YES ? kCATransitionFromRight : kCATransitionFromLeft);
      

      但这有效:

      if (flipsideView.hidden == YES) {
          transition.subtype = kCATransitionFromRight;
      } else {
          transition.subtype = kCATransitionFromLeft;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多