Мы строили мессенджер, как приложение с расширением share (от сафари). Прямо сейчас мы столкнулись с большой проблемой аварии Extension, когда им пытаются получить строке адресаОшибка NSURL absoluteString в расширении расширения iOS для Xamarin
CRASH:
Протектор 1
Необработанное исключение:
0 Mono 0x01746691 mono_handle_exception_internal + 2168
1 Mono 0x01745e13 mono_handle_exception + 30
2 Моно 0x0173ed2d mono_arm_throw_exception + 104
3 com.XXX.ShareExtension 0x00268e44 throw_exception + 64
на ObjCRuntime.Runtime.throw_ns_exception (IntPtr) [0x00000] в/Пользователи/строитель/данных/дорожки/2077/d8e9592a/источник/maccore/выполнение/Delegates.generated.cs: 100 на (оберточном родной к управляемому) ObjCRuntime.Runtime.throw_ns_exception (IntPtr) < 0x00048>
6 com.XXX.ShareExtension 0x006fe5c0 xamarin_throw_ns_exception + 52
7 com.XXX.ShareExtension 0x007004b0 _ZL17exc eption_handlerP11NSException + 224
8 CoreFoundation 0x242cbba9 + 644
9 libobjc.A.dylib 0x35c7f087 + 174
10 LibC++ abi.dylib 0x35463e17 + 78
11 LibC++ abi.dylib 0x354638f7 __cxa_rethrow + 102
12 libobjc.A.dylib 0x35c7ef47 objc_exception_rethrow + 42
Это означает моно Крас ГЭС. Заглядывая я вижу:
Протектор 2
iOS_ShareExtension [336]: Неизвестное удался исключение:
Objective-C исключении брошенного. Имя: NSInvalidArgumentException Причина:
NSGetSizeAndAlignment(): кодировка без поддержки типа 'Y' at 'Y,Äû h≈Π0i≈Π√ ™ o≈Π√ª' in 'Y,Äû h≈Π0i≈Π √ ™ o≈Π√ª»
Native трассировки стека:
0 CoreFoundation 0x242cb883 + 150
1 libobjc.A.dylib 0x35c7edff objc_exception_throw + 38
2 CoreFoundation 0x242cce71 + 536
3 CoreFoundation 0x242cef69 + 60
4 CoreFoundation 0x241f9515 + 516
5 libextension.dylib 0x355c2e47 + 150
6 ком. XXX.ShareExtension 0x000643f4 wrapper_managed_to_native_ObjCRuntime_Messaging_void_objc_msgSend_IntPtr_IntPtr_IntPtr_intptr_intptr_intptr_intptr_intptr + 128
7 com.XXX.ShareExtension 0x0003a5e8 Foundation_NSItemProvider_LoadItem_string_Foundation_NSDictionary_System_Action_2_Foundation_NSObject_Foundation_NSError + 384
8 com.XXX.ShareExtension 0x0000c5d4 iOS_ShareExtension_ShareViewController_ViewDidLoad + 1048
Мой код, который выходит из строя:
NSExtensionItem content = ExtensionContext.InputItems [0];
foreach (NSItemProvider item in content.Attachments) {
if (item.HasItemConformingTo ("public.url")){
item.LoadItem (UTType.URL,null, OnItemLoaded);
break;
}
}
, а затем:
NSUrl url = objectLoaded as NSUrl;
_sharedURl = url.AbsoluteString; // THIS CRASH!!!
Любая идея, как обойти это? Я даже пытался скрыть этот NSUrl различными способами.
Что такое "objectLoaded"? Если это данные, полученные в LoadHetler completeHandler, то это не NSUrl, а данные, возвращаемые Url. Тип приведение его к URL и пытаюсь получить доступ к AbsoluteString вызовет ошибку (ваша трассировка стеки появляется, чтобы показать двоичные данные для него) – SushiHangover
Да, это: частной пустоты OnItemLoaded (NSObject objectLoaded, NSError ошибка) кажется вам правы, теперь мне интересно, почему это иногда работает? – DivisionByNullPointer