Xamarin.iOS本机崩溃

时间:2017-11-11 07:20:01

标签: xamarin.ios mono

经过艰苦的尝试重现以下崩溃的过程后,我终于成功了,虽然它仍然没有告诉我它到底发生了什么或者是什么导致它(虽然我确实有怀疑,见下文)。毋庸置疑,它并不常见,但奇怪的是,在应用程序的这个生产版本中添加新功能(例如使用派生的UIApplication类),似乎会使它更频繁地崩溃同样的错误。

我从我正在测试的iOS模拟器中提取了此崩溃日志。在真实设备上进行测试会产生相同的错误。

UIViewAnimationState setAnimationAttributes:correctZeroDuration:skipDelegateAssignment:customCurve:

我注意到在该日志中,有一个对private void OnKeyboardNotification(NSNotification notification) { if (!IsViewLoaded) { return; } // Check if keyboard is becoming visible bool visible = notification.Name == UIKeyboard.WillShowNotification; // Start an animation using values from the keyboard notification UIView.BeginAnimations("Animate for keyboard"); UIView.SetAnimationBeginsFromCurrentState(true); UIView.SetAnimationDuration(UIKeyboard.AnimationDurationFromNotification(notification)); UIView.SetAnimationCurve((UIViewAnimationCurve)UIKeyboard.AnimationCurveFromNotification(notification)); var keyboardFrame = visible ? UIKeyboard.FrameEndFromNotification(notification) : UIKeyboard.FrameBeginFromNotification(notification); OnKeyboardChanged(visible, (float)keyboardFrame.Height); UIView.CommitAnimations(); } protected virtual void OnKeyboardChanged(bool visible, float keyboardHeight) { } 的调用。 这至少与应用程序似乎崩溃的方式一致(在极少数情况下它会崩溃)。它似乎总是在动画视图时。在这个特定的例子中,是在点击输入字段后键盘出现的时候。

所以我搜索了代码以找到动画的位置,我发现了这个:

=== Visual Studio Community 2017 for Mac ===
Version 7.2.2 (build 11)
Runtime: Mono 5.4.1.6 (2017-06/1f4613aa1ac) (64-bit)

=== .NET Core ===
Runtime Version: 1.0.1
SDK Version: 1.0.0-preview2-003131

=== Xamarin.iOS ===
Version: 10.12.3.3 (Visual Studio Community)

=== iOS ===
Version: 10.3

=== Test device ===
iPad Pro (9.7 inch)

就像我说的,仍然没有告诉我完全导致崩溃的原因,所以...

问题: 究竟是什么导致了崩溃?

版本信息:

class print()    // <-- class declaration doesn't take parentheses

print(string name)    // <-- you have to use std::string

1 个答案:

答案 0 :(得分:0)

您可以尝试将该过程包装在

try {

} catch (Exception ex) {

};

并在catch中添加一个断点,然后查找ex对象以获取有关导致崩溃的更多信息。

我对未来的建议是将int main[]函数转换为try-catch,这样您就可以自动获取应用程序从本机代码中抛出的任何崩溃:)