4

我正在使用 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);

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

4

4 回答 4

7

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

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

I'd file this as a compiler bug.

于 2009-07-23T23:55:15.500 回答
0

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

于 2009-07-22T16:26:42.510 回答
0

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

transition.subtype = flipsideView.hidden ? kCATransitionFromRight : kCATransitionFromLeft;
于 2009-07-22T16:58:23.960 回答
0

此原始代码失败:

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

但这有效:

if (flipsideView.hidden == YES) {
    transition.subtype = kCATransitionFromRight;
} else {
    transition.subtype = kCATransitionFromLeft;
}
于 2009-07-22T19:27:03.317 回答