首页 > 解决方案 > 单例返回 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)

请帮助我!

如果您需要完整的崩溃日志,请写信给我。

标签: c#xamarin.iosapp-store-connect

解决方案


我注意到我的 ios 应用程序在获取静态对象(单例)时“崩溃”。所以我不得不改用 Xamarin.Forms.Application.Current.Properties


推荐阅读