Monotouch - [NSConcreteValue doubleValue]: 没有识别出的选择器发送到实例

9

这似乎是一个比较模糊的问题 - 但是在我的用户界面中,我得到了一个“未识别的选择器发送给实例”的提示。堆栈跟踪并没有太大帮助。一般来说 - 在Monodevelop中调试这个问题的最佳方法是什么?任何建议都将非常有帮助。


2
我在这里找到了几个可能的解决方案:https://dev59.com/cVzUa4cB1Zd3GeqP1D71#8729649
https://dev59.com/GVzUa4cB1Zd3GeqP2FSO#7804426
- Rolf Bjarne Kvinge
堆栈跟踪对大多数人来说可能看起来没有用(当您看到它时,这是因为许多事情/检查失败了),但对某些人来说它可以非常有用。请编辑您的问题,向我们展示相关代码和您拥有的堆栈跟踪。使用它们,我们应该能够找到问题所在。 - poupou
2个回答

22

Rolf的链接揭示了正确答案。

CABasicAnimation scale_animation = CABasicAnimation.FromKeyPath("transform.scale");
to:
CABasicAnimation scale_animation = CABasicAnimation.FromKeyPath("transform");

谢谢!


simple and perfect :D. - Huynh Inc
对我来说,是从“transform.translation.x”变成了“transform”。 - Ahmadreza
@xindong的回答更好地回答了这个问题,通过展示导致崩溃的原因。 - Warpling
虽然这解决了崩溃问题,但它也完全移除了我的动画。 - Josh Grant

8

第一个答案不是一个好的解决方案。transform.scale应该是一个双精度浮点型,如果你将CABasicAnimation的fromValue或toValue赋值为NSValue类型,它无法转换为双精度浮点型数值,因此应用程序会崩溃。

错误示例:

     animation.fromValue = [NSValue valueWithCGSize:CGSizeMake(0.5, 0.5)];
     animation.toValue = [NSValue valueWithCGSize:CGSizeMake(1.2, 1.2)];

正确的例子:

     animation.fromValue = @(0.5);
     animation.toValue = @(1.2);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接