Xamarin.iOS MPMediaItem.AssetURL is always null
本文关键字:always null is AssetURL iOS MPMediaItem Xamarin | 更新日期: 2023-09-27 18:27:28
在Xamarin.iOS中,MPMediaItem.AssetURL总是为任何项目返回null。我研究了一下,然后尝试使用Objective-C句柄。所以我用了
NSUrl url = new NSUrl(item.ValueForProperty(MPMediaItem.AssetURLProperty).Handle);
上面的代码试图获得AssetURL属性的objective-c句柄,然后将其转换为托管表示。它有效!
因此,我决定研究mono的实现。Mono已将其实现为-
return this.ValueForProperty (MPMediaItem.AssetURLProperty) as NSUrl;
我手动尝试过,但它实际上返回了null。所以,这意味着Xamarin的实现是错误的。然而,有一件事让我很困惑。在我运行了正确的代码(第一个片段)后,第二个片段不会返回null,而是返回正确的值。我的第一个片段有什么可能改变第二个片段的行为?
听起来从ValueForProperty
返回的句柄不是NSUrl
,而as
强制转换使其成为null
(例如,它可能是内部/私有类型)。
我的第一个片段可能做了什么来改变第二个片段的行为?
很简单。您使用此特定句柄值创建了一个NSUrl
。如果您再次尝试获取它,则会返回相同的实例(除非它是垃圾收集的),因此我们有一个表示单个本地实例的单个托管实例。