c# - 单例返回 null(仅限 iOS Xamarin AppStore 版本)
问题描述
我正在开发一个 App vor iOS。如果没有发生空指针,我的应用程序无法通过 Apple 认证。我的模拟器测试一切正常。
辛格尔顿代码:
public class ExercisesContainer
{
private static ExercisesContainer container;
public ObservableCollection<Exercise> Exercises { get; set; }
public ObservableCollection<Exercise> ExercisesNotActive { get; set; }
private ExercisesContainer()
{
...
}
public static ExercisesContainer GetInstance()
{
if (container == null)
{
container = new ExercisesContainer(); // Error (null pointer) happens here as far as i konw!
}
return container;
}
}
符号化崩溃日志:
Exception Type: EXC_BAD_ACCESS (SIGABRT)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000
VM Region Info: 0 is not in any region. Bytes before following region: 4342972416
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
__TEXT 0000000102dc8000-0000000102e18000 [ 320K] r-x/r-x SM=COW ...nTraining.iOS
Triggered by Thread: 0
Thread 0 name: tid_507 Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x0000000199d5cd88 0x199d37000 + 155016
1 libsystem_pthread.dylib 0x0000000199c751e8 0x199c73000 + 8680
2 libsystem_c.dylib 0x0000000199bc86c0 0x199b56000 + 468672
3 libsystem_c.dylib 0x0000000199bc8650 0x199b56000 + 468560
4 SuspensionTraining.iOS 0x0000000104c909c0 xamarin_initialize.cold.1 + 0
5 SuspensionTraining.iOS 0x0000000104c86800 xamarin_printf + 32237568 (runtime.m:2468)
6 SuspensionTraining.iOS 0x0000000104b472c0 mono_invoke_unhandled_exception_hook + 30929600 (exception.c:1299)
7 SuspensionTraining.iOS 0x0000000104adb900 mono_handle_exception_internal + 30488832 (mini-exceptions.c:2778)
8 SuspensionTraining.iOS 0x0000000104ada324 mono_handle_exception + 30483236 (mini-exceptions.c:3102)
9 SuspensionTraining.iOS 0x0000000104ad004c handle_signal_exception + 30441548 (exceptions-arm64.c:525)
10 ??? 0x0000000000000001 0 + 1
11 SuspensionTraining.iOS 0x00000001044565f8 SuspensionTraining_Services_ExercisesContainer_GetInstance + 23651832 (/C:\Users\Johan\source\repos\SuspensionTraining\SuspensionTraining\SuspensionTraining\Services\ExercisesContainer.cs:9338)
12 SuspensionTraining.iOS 0x00000001044703e8 SuspensionTraining_Models_TrainingExercise_Decode_string_SuspensionTraining_Models_Training + 23757800 (/C:\Users\Johan\source\repos\SuspensionTraining\SuspensionTraining\SuspensionTraining\Models\TrainingExercise.cs:136)
13 SuspensionTraining.iOS 0x000000010446e52c SuspensionTraining_Models_Training_Decode + 23749932 (/C:\Users\Johan\source\repos\SuspensionTraining\SuspensionTraining\SuspensionTraining\Models\Training.cs:188)
14 SuspensionTraining.iOS 0x0000000104323c5c SuspensionTraining_ViewModels_TrainingViewModel__ctor_SuspensionTraining_Models_TrainingData + 22395996 (/C:\Users\Johan\source\repos\SuspensionTraining\SuspensionTraining\SuspensionTraining\ViewModels\TrainingViewModel.cs:28)
15 SuspensionTraining.iOS 0x000000010430a480 SuspensionTraining_Views_TrainingsListView_TrainingsWrapper_ItemTapped_object_Xamarin_Forms_ItemTappedEventArgs + 22291584 (/C:\Users\Johan\source\repos\SuspensionTraining\SuspensionTraining\SuspensionTraining\Views\TrainingsListView.xaml.cs:42)
16 SuspensionTraining.iOS 0x0000000103c390bc Xamarin_Forms_ListView_NotifyRowTapped_int_int_Xamarin_Forms_Cell + 15143100 (/D:\a\1\s\Xamarin.Forms.Core\ListView.cs:459)
17 SuspensionTraining.iOS 0x0000000103a58c88 Xamarin_Forms_Platform_iOS_ListViewRenderer_ListViewDataSource_RowSelected_UIKit_UITableView_Foundation_NSIndexPath + 13175944 (/D:\a\1\s\Xamarin.Forms.Platform.iOS\Renderers\ListViewRenderer.cs:1200)
18 SuspensionTraining.iOS 0x00000001031a3710 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 272
19 SuspensionTraining.iOS 0x0000000104aed7bc mono_jit_runtime_invoke + 30562236 (mini-runtime.c:3164)
20 SuspensionTraining.iOS 0x0000000104badf04 mono_runtime_invoke_checked + 31350532 (object.c:3212)
21 SuspensionTraining.iOS 0x0000000104bb1808 mono_runtime_invoke + 31365128 (object.c:3099)
22 SuspensionTraining.iOS 0x0000000102df05c4 native_to_managed_trampoline_6(objc_object*, objc_selector*, _MonoMethod**, objc_object*, objc_object*, unsigned int) + 165316 (registrar.m:320)
23 SuspensionTraining.iOS 0x0000000102e0a9ec -[Xamarin_Forms_Platform_iOS_ListViewRenderer_ListViewDataSource tableView:didSelectRowAtIndexPath:] + 272876 (registrar.m:11780)
请帮助我!
如果您需要完整的崩溃日志,请写信给我。
解决方案
我注意到我的 ios 应用程序在获取静态对象(单例)时“崩溃”。所以我不得不改用 Xamarin.Forms.Application.Current.Properties
推荐阅读
- tailwind-css - nx:在库中使用 @tailwind 关键字
- html - 我可以在网页中每个字母有相等的空间吗?
- c - 为什么 C 编程中需要 fortran 包装器?
- reactjs - 如何在 react 和 axios 中对所有请求进行分组?
- react-native - “找不到 com.android.tools.build: gradle: 4.2.2。”
- arrays - 字符指针数组不应该打印指针吗?为什么它打印它指向的字符串?
- r - 创建参数变量
存储参数变量 - wicket - 如何正确呈现 GridView 组件中的第一列?
- reactjs - 如何使用 Jest 和 Enzyme 测试功能组件中的 if 条件?
- python - PIL Quad 变换到 OpenCV 变换