Зачем LinkerPleaseInclude

244
28 сентября 2021, 18:30

Делал кастомный UITextView и сталкнулся с проблемой при байндинге текстового поля прога просто вылетала

set.Bind(_messageField.TextView).For(l => l.Text).To(vm => vm.Message);
string _message;
    public string Message
    {
        get { return _message; }
        set { SetProperty(ref _message, value); }
    }

Необработанное исключение: System.ArgumentNullException: отсутствует информация о событии источника в MvxWeakEventSubscription Имя параметра: sourceEventInfo в MvvmCross.Platform.WeakSubscription.MvxWeakEventSubscription 2[TSource,TEventArgs]..ctor(UIKit.NSTextStorage source, System.Reflection.EventInfo sourceEventInfo, System.EventHandler 1 [TEventArgs] targetEventHandler) [0x00017] в <6adc0d5857264558a9d45778a78ae02a>: 0 на MvvmCross.Platform.WeakSubscription.MvxWeakEventSubscription 2[TSource,TEventArgs]..ctor(UIKit.NSTextStorage source, System.String sourceEventName, System.EventHandler 1 [TEventArgs] targetEventHandler) [0x00012] в <6adc0d5857264558a9d45778a78ae02a>: 0 в MvvmCross.Platform.WeakSubscription.MvxWeakSubscriptionExtensionMethods.WeakSubscribe [TSource, TEventArgs] (источник TSource, System.String EventName, System.EventHandler 1[TEventArgs] eventHandler) [0x00000] in <6adc0d5857264558a9d45778a78ae02a>:0 at MvvmCross.Binding.iOS.Target.MvxUITextViewTextTargetBinding.SubscribeToEvents() [0x00053] in <614c9ef828c14ba687a40ec2656f480f>:0 at MvvmCross.Binding.Bindings.MvxFullBinding.CreateTargetBinding(System.Object target) [0x00057] in <866b1e46764b48aab0d408952a6f006f>:0 at MvvmCross.Binding.Bindings.MvxFullBinding..ctor(MvvmCross.Binding.MvxBindingRequest bindingRequest) [0x0002f] in <866b1e46764b48aab0d408952a6f006f>:0 at MvvmCross.Binding.Binders.MvxFromTextBinder.BindSingle(MvvmCross.Binding.MvxBindingRequest bindingRequest) [0x00000] in <866b1e46764b48aab0d408952a6f006f>:0 at MvvmCross.Binding.Binders.MvxFromTextBinder+<>c__DisplayClass2_0.<Bind>b__0 (MvvmCross.Binding.Bindings.MvxBindingDescription description) [0x00018] in <866b1e46764b48aab0d408952a6f006f>:0 at System.Linq.Enumerable+SelectArrayIterator 1[TEventArgs] eventHandler) [0x00000] in <6adc0d5857264558a9d45778a78ae02a>:0 at MvvmCross.Binding.iOS.Target.MvxUITextViewTextTargetBinding.SubscribeToEvents() [0x00053] in <614c9ef828c14ba687a40ec2656f480f>:0 at MvvmCross.Binding.Bindings.MvxFullBinding.CreateTargetBinding(System.Object target) [0x00057] in <866b1e46764b48aab0d408952a6f006f>:0 at MvvmCross.Binding.Bindings.MvxFullBinding..ctor(MvvmCross.Binding.MvxBindingRequest bindingRequest) [0x0002f] in <866b1e46764b48aab0d408952a6f006f>:0 at MvvmCross.Binding.Binders.MvxFromTextBinder.BindSingle(MvvmCross.Binding.MvxBindingRequest bindingRequest) [0x00000] in <866b1e46764b48aab0d408952a6f006f>:0 at MvvmCross.Binding.Binders.MvxFromTextBinder+<>c__DisplayClass2_0.<Bind>b__0 (MvvmCross.Binding.Bindings.MvxBindingDescription description) [0x00018] in <866b1e46764b48aab0d408952a6f006f>:0 at System.Linq.Enumerable+SelectArrayIterator 2 [TSource, TResult].MoveNext() [0x0003a] в <8bc31b0df50a4d32b3f1d5af764165ad>: 0 в MvvmCross.Binding.BindingContext.MvxBindingContextOwnerExtensions.AddBindings(MvvmCross.Binding.BindingContext.IMvxBindingContextOwner view, объект System.Object, System.Collections.Generic. IEnumerable 1[T] bindings, System.Object clearKey) [0x0001d] in <866b1e46764b48aab0d408952a6f006f>:0 at MvvmCross.Binding.BindingContext.MvxBindingContextOwnerExtensions.AddBindings(MvvmCross.Binding.BindingContext.IMvxBindingContextOwner view, System.Object target, System.Collections.Generic.IEnumerable 1 [T] bindingDescriptions, System.Object clearKey) [0x00018] в <866b1e46764b48aab0d408952a6f006f>: 0 в MvvmCross.Binding.BindingContext.MvxBindingContextOwnerExtensions.AddBinding(MvvmCross.BindingBindingContext.IMvxBindingContextOwner view, System.Object target, MvvmCross. Binding.Bindings.MvxBindingDescription bindingDescription, System.Object clearKey) [0x0000b] в <866b1e46764b48aab0d408952a6f006f>: 0 в MvvmCross.Binding.BindingContext.MvxBaseFluentBindingDescription'1 [TTarget].Apply() [0x0001f] в <866b1e46764b48aab0d408952a6f006f>: 0 в BALAHA. iOS.Views.RecordingView.SetupBindings() [0x00418] в /Users/BALAHA_mbp/Projects/BALAHA/BALAHA/iOS/Views/RecordingView.cs:799 в BALAHA. iOS.Views.RecordingView.ViewDidLoad() [0x0002f] в /Users/BALAHA_mbp/Projects/BALAHA/BALAHA/iOS/Views/RecordingView.cs:114 at (оболочка, управляемая на основе) UIKit.UIApplication: UIApplicationMain (int, string [], intptr, intptr) в UIKit.UIApplication.Main(System.String [] args, System.IntPtr, делегат System.IntPtr) [0x00005] in/Users/builder/data/lanes/5665/f70a1348/source/xamarin-macios/src/UIKit/UIApplication.cs:79 в UIKit.UIApplication.Main(System.String [] args, System.String mainClassName, System.String delegateClassName) [0x00038] in/Users/builder/data/lanes/5665/f70a1348/source/xamarin-macios/src/UIKit/UIApplication.cs:63 в BALAHA.iOS.Application.Main(System.String [] args) [0x00001] in/Users/BALAHA_mbp/Projects/BALAHA/BALAHA/iOS/Main.cs:17 2018-01-12 18: 23: 28.985 BALAHA.iOS [888: 372317] Необработанное управляемое исключение: отсутствует информация о событии источника в MvxWeakEventSubscription

После этого увидел совет добавить в LinkerPleaseInclude собственно для чего это делается и что такое LinkerPleaseInclude

public void Include(UITextView textView)
    {
        textView.TextStorage.DidProcessEditing += (sender, e) => textView.Text = "";           
    }
Answer 1

Xamarin Linker используется в проектах iOS и Android для удаления неиспользуемого кода из скомпилированных сборок. Это помогает сократить конечный размер apk или ipa. Однако, он часто действует слишком неразборчиво и также удаляет те методы и поля, которые нужны. Так часто случается, если на методы ссылаются только путем отражения.

Вот тут можно почитать подробнее на русском, а тут на английском.

READ ALSO
Найти минимальную цену min

Найти минимальную цену min

необходимо получить минимальное значение цены (Price), знаю о существовании min, но тут есть проблема, цены в разных array, как в таком случить минимальное...

95
composer repositories, после установки не видит пакет

composer repositories, после установки не видит пакет

Всем привет, в первый раз устанавливаю через composer библиотеку из github

143
Не получается вернуть массив из функции при помощи return?

Не получается вернуть массив из функции при помощи return?

Возвращает NULL, хотя если его выводить в функции - все работает, почему не получается вернуть?

157