MonoTouch NSClassFromString

本文关键字:NSClassFromString MonoTouch | 更新日期: 2023-09-27 18:36:46

我正在尝试在MonoTouch中使用以下Objective-C之类的代码:

if (NSClassFromString(@"ADBannerView"))

C# 中的等效项是什么?

基本上我想使用 iAd,但我需要检查是否存在 ADBannerViewADInterstitialAd ,因为它们并非在所有版本的操作系统上都可用。 (我宁愿做功能检查而不是iOS版本检查)

我认为这在其他情况下也可能有所帮助。

MonoTouch NSClassFromString

最近的 MonoTouch 将始终提供ADBannerView,因此您无法将 C# 等效的 Type.GetType 来查询可用性。

通常,版本检查是检查功能的最佳方式。 例如

bool available = UIDevice.CurrentDevice.CheckSystemVersion (4, 0);

对于任何 4.0+ 版本的 iOS(4.0 是将 ADBannerView 添加到 iOS 时),都将返回 true

一种可能的替代方法(可能并非在所有情况下都有效)是创建一个实例并检查其句柄。由于 ObjC 是基于消息的发送init将返回 null(.NET 构造函数无法做到的事情)。例如

bool available = (new ADBannerView ().Handle != IntPtr.Zero);

请注意,您可能最好用using来包围上述内容,以释放视图或将其集成到ADBannerView的正常创建中。

更新:当然,对NSClassFromString的p/invoke将与ObjectiveC代码完全相同:-)

这个人问了这个问题并回答了它。 看起来你需要编译器标志:

看看这个:带有iAds的MonoTouch应用程序在模拟器上运行,在设备上崩溃

否则,可以在程序集中检查类。

最后,您可以使用与我相同的Google搜索:单点触控ADBannerView组件。

如果这没有帮助,MonoTouch的一个人通常会检查Monotouch标记的问题,并且真的很有帮助。

相关文章:
  • 没有找到相关文章