jon*_*ers 5 .net c# objective-c xamarin.ios ios
我正在尝试在 MonoTouch 中使用如下 Objective-C 代码:
if (NSClassFromString(@"ADBannerView"))
C# 中的等价物是什么?
基本上我想使用 iAd,但我需要检查 和 是否存在ADBannerView
,ADInterstitialAd
因为它们并非在所有版本的操作系统上都可用。(而且我宁愿进行功能检查而不是 iOS 版本检查)
我认为这在其他情况下也可能有帮助。
最近的 MonoTouch 将始终提供这样的功能ADBannerView
,因此您无法使用相当于 C# 的方法Type.GetType
来查询可用性。
通常,版本检查是检查功能的最佳方法。例如
bool available = UIDevice.CurrentDevice.CheckSystemVersion (4, 0);
Run Code Online (Sandbox Code Playgroud)
对于任何 4.0+ 版本的 iOS都将返回trueADBannerView
(4.0 是添加到 iOS 时的版本)。
一种可能的替代方案(可能并非在所有情况下都有效)是创建一个实例并检查它的句柄。由于 ObjC 是基于消息的,发送init
将返回 null(.NET 构造函数无法执行此操作)。例如
bool available = (new ADBannerView ().Handle != IntPtr.Zero);
Run Code Online (Sandbox Code Playgroud)
请注意,您可能最好将上面的内容包围起来using
以处理视图或将其集成到您的ADBannerView
.
更新:当然 ap/invoke to 的作用与ObjectiveC 代码完全相同NSClassFromString
:-)