我正在尝试在 MonoTouch 中使用以下 Objective-C 代码:
if (NSClassFromString(@"ADBannerView"))
C# 中的等价物是什么?
基本上我想使用 iAd,但我需要检查 and 的存在ADBannerView
,ADInterstitialAd
因为它们并非在所有版本的操作系统上都可用。(而且我宁愿做功能检查而不是 iOS 版本检查)
我认为这在其他情况下也可能会有所帮助。
我正在尝试在 MonoTouch 中使用以下 Objective-C 代码:
if (NSClassFromString(@"ADBannerView"))
C# 中的等价物是什么?
基本上我想使用 iAd,但我需要检查 and 的存在ADBannerView
,ADInterstitialAd
因为它们并非在所有版本的操作系统上都可用。(而且我宁愿做功能检查而不是 iOS 版本检查)
我认为这在其他情况下也可能会有所帮助。
最近的 MonoTouch 将始终提供ADBannerView
,因此您无法使用 C# 等价物Type.GetType
来查询可用性。
通常,版本检查是检查功能的最佳方式。例如
bool available = UIDevice.CurrentDevice.CheckSystemVersion (4, 0);
对于任何 4.0+ 版本的 iOS(4.0是添加到 iOS 时),将返回true 。ADBannerView
一种可能的替代方法(可能并非在每种情况下都有效)是创建一个实例并检查它的句柄。由于 ObjC 是基于消息的发送init
,因此将返回 null(这是 .NET 构造函数无法做到的)。例如
bool available = (new ADBannerView ().Handle != IntPtr.Zero);
请注意,您可能最好将上述内容与using
处理视图或将其集成到您的正常创建中ADBannerView
。
更新:当然 ap/invoke toNSClassFromString
将与 ObjectiveC 代码完全相同:-)
这个人问了这个问题并回答了。看起来您需要编译器标志:
看看这个:带有 iAds 的 MonoTouch 应用程序在模拟器上运行,在设备上崩溃
否则,您可以检查程序集中的类。
最后,您可以使用与我相同的谷歌搜索:monotouch ADBannerView 程序集
如果这没有帮助,MonoTouch 的一个人通常会检查 monotouch 标记的问题,并且真的很有帮助。