4

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

if (NSClassFromString(@"ADBannerView"))

C# 中的等价物是什么?

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

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

4

2 回答 2

2

最近的 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 代码完全相同:-)

于 2012-06-08T17:52:25.617 回答
0

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

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

否则,您可以检查程序集中的类

最后,您可以使用与我相同的谷歌搜索:monotouch ADBannerView 程序集

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

于 2012-06-08T14:53:46.343 回答